Menu

Tuplas en Python: secuencias inmutables, unpacking y named tuples

Cuándo recurrir a una tupla en vez de a una lista — inmutabilidad, unpacking, named tuples y los escenarios para los que las tuplas están hechas.

Una tupla es una lista que no puedes cambiar

Las tuplas y las listas parecen similares de un vistazo — ambas son secuencias ordenadas, ambas soportan indexación e iteración — pero una diferencia crítica lo cambia todo: las tuplas son inmutables. Una vez que creas una tupla, no puedes añadirle, quitarle ni intercambiar un elemento.

Escribes tuplas con paréntesis (o a veces sin ellos):

main.py
Output
Click Run to see the output here.

Una tupla con un elemento necesita una coma final, o Python trata los paréntesis como agrupación:

main.py
Output
Click Run to see the output here.

Y para tuplas vacías, usa ():

main.py
Output
Click Run to see the output here.

Inmutabilidad, en la práctica

Intenta cambiar una tupla y Python te detiene:

main.py
Output
Click Run to see the output here.

Puedes leer de una tupla libremente — indexar, slicing, iterar, in — pero no puedes modificarla. Si necesitas una tupla distinta, creas una nueva.

¿Por qué querrías algo que no puedes cambiar?

La inmutabilidad suena como una limitación, pero a menudo es la feature que quieres.

  1. Seguridad. Una tupla que pasas a una función no puede mutarse a tus espaldas.
  2. Hashabilidad. Las tuplas de valores inmutables pueden usarse como claves de diccionario o miembros de set; las listas no.
  3. Intención. Una tupla dice "esto es un registro de forma fija". point = (3, 4) comunica "dos coordenadas" más claramente que point = [3, 4].

Las tuplas brillan para cosas como:

  • Coordenadas: (x, y), (lat, lon)
  • Colores RGB: (255, 128, 0)
  • Registros: (name, email, signup_date)
  • Devolver varios valores desde una función

Unpacking

Las tuplas y la sintaxis de unpacking están hechas la una para la otra:

main.py
Output
Click Run to see the output here.

La coma a la izquierda es lo que hace el unpacking. Python ve dos nombres y una tupla con dos valores, y los ata por pares.

Esto está por todas partes en Python idiomático:

main.py
Output
Click Run to see the output here.

Puedes usar * para recoger "el resto":

main.py
Output
Click Run to see the output here.

Útil cuando solo te importa el primer y último elemento.

Tuplas como claves de diccionario

Como las tuplas son hasheables (mientras su contenido lo sea), puedes usarlas como claves de dict. Las listas no pueden:

main.py
Output
Click Run to see the output here.

Ese patrón — indexar por un compuesto de valores — es sorprendentemente útil. Piensa: "la puntuación del usuario X en el día Y" o "la mejor ruta de A a B".

Tuplas para múltiples valores de retorno

Una función que necesita devolver más de una cosa suele devolver una tupla:

main.py
Output
Click Run to see the output here.

El propio divmod() incorporado de Python hace exactamente esto. La asignación por destructuring en el código que llama hace que se lea naturalmente.

Named tuples, cuando la posición no basta

Cuando tus tuplas crecen más allá de dos o tres elementos, recordar qué posición significa qué se vuelve tedioso. collections.namedtuple lo arregla:

main.py
Output
Click Run to see the output here.

Ahora los elementos de la tupla tienen nombres. Sigue siendo inmutable, sigue siendo una tupla (así que unpacking e indexación funcionan), pero el patrón de acceso es mucho más amigable. Para cualquier cosa más compleja, está dataclasses — los conoceremos más adelante en el capítulo de clases.

Tupla vs lista: una guía rápida de decisión

  • Forma fija, cada posición con significado → tupla.
  • Una colección que puede crecer o encoger → lista.
  • Devolver múltiples valores desde una función → tupla.
  • Necesitas una clave de dict o un miembro de set → tupla (la lista no funcionará).
  • Vas a mutarla → lista (la tupla no te dejará).

Seguimos

Las tuplas cubren un extremo del espectro: fijas, pequeñas, estructuradas. Siguiente: los sets, que cubren un trabajo completamente distinto — comprobación rápida de pertenencia y unicidad.

Preguntas frecuentes

¿Qué es una tupla en Python?

Una tupla es una secuencia ordenada e inmutable — como una lista, pero una vez creada no puedes añadir, quitar o cambiar sus elementos. Escribes tuplas con paréntesis: point = (3, 4).

¿Cuál es la diferencia entre una tupla y una lista?

Ambas son secuencias ordenadas. Las listas son mutables — puedes cambiarlas después de creadas — mientras que las tuplas son inmutables. Las tuplas se usan típicamente para colecciones pequeñas de valores que van juntos como un "registro" único, como coordenadas o los múltiples valores de retorno de una función.

¿Cuándo debería usar una tupla?

Usa una tupla cuando tengas un registro de tamaño fijo donde cada posición tenga significado — coordenadas, colores RGB, una fila de base de datos. Además, usa tuplas como claves de diccionario o miembros de set, ya que las listas no pueden usarse ahí. Para todo lo demás donde la colección pueda crecer o encoger, las listas son el valor por defecto.

Aprende a programar con Coddy

COMENZAR