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):
Una tupla con un elemento necesita una coma final, o Python trata los paréntesis como agrupación:
Y para tuplas vacías, usa ():
Inmutabilidad, en la práctica
Intenta cambiar una tupla y Python te detiene:
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.
- Seguridad. Una tupla que pasas a una función no puede mutarse a tus espaldas.
- Hashabilidad. Las tuplas de valores inmutables pueden usarse como claves de diccionario o miembros de set; las listas no.
- Intención. Una tupla dice "esto es un registro de forma fija".
point = (3, 4)comunica "dos coordenadas" más claramente quepoint = [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:
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:
Puedes usar * para recoger "el resto":
Ú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:
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:
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:
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.