Pregunta 1¿Cuál de las siguientes está declarada correctamente como tupla?
Cómo usar las tuplas de Python (tuple)
Aprende el tipo tuple de Python: declaración con paréntesis, inmutabilidad y desempaquetado de varios valores en una línea.
Qué es una tupla — la versión «no se puede cambiar» de list
Una tupla (tuple) te permite guardar varios valores juntos en una sola variable. Es muy parecida a list, vista en el artículo anterior, pero la diferencia clave es que una vez creada, no puedes cambiar su contenido.
Si una list es un contenedor que planeas reescribir (como la lista de la compra), una tupla es un contenedor que fijas una vez y dejas en paz — piensa en coordenadas (x, y) o en un color RGB como (255, 0, 0).
Solo cambian el tipo de paréntesis y si se puede modificar o no; la función — agrupar varios valores — es la misma.
Si cambia, usa list; si se queda fijo, usa tuple es una regla sencilla.
Para declarar una, solo rodea los valores con ( y ), separados por comas. Donde una list usa [ ], una tuple usa ( ).
Acceder a los elementos (indexación y slicing) funciona igual que en una list: [0] para el primero, [-1] para el último, [1:3] para una rebanada.
# Declarar una tupla
fruits = ("apple", "banana", "lemon")
print(fruits) # ('apple', 'banana', 'lemon')
print(type(fruits)) # <class 'tuple'>
print(fruits[0]) # apple
print(fruits[-1]) # lemon
print(fruits[1:]) # ('banana', 'lemon') ← una rebanada también es tuple
# Se pueden mezclar tipos
profile = ("Ana", 28, 165.5)
Una tupla de un solo elemento necesita una coma final
Si escribes fruits = ("apple"), eso es una cadena, no una tupla. ( ) se usa también como paréntesis matemáticos, así que Python no puede distinguirlos cuando solo hay un valor dentro.
Para crear una tupla de un elemento, añade una coma final como ("apple",).
Python también te deja omitir los paréntesis y escribir 1, 2, 3 como tupla, pero por legibilidad, mantén los ( ).
Inmutable — «reescribir un elemento» y «cambiar la caja» son cosas distintas
Una tupla es inmutable (no modificable). Una vez creada, no puedes sobrescribir, añadir ni eliminar sus elementos.
Lo más fácil de confundir aquí es la diferencia entre «cambiar un elemento» y «meter una tupla completamente nueva en la variable». Lo primero no se puede; lo segundo sí.
t[0] = 9 intenta cambiar el contenido directamente, así que es un error.
t = (4, 5, 6) solo apunta la variable a una tupla nueva, así que funciona.
Concatenación y métodos (count / index)
Puedes construir una tupla nueva uniendo dos tuplas. Usar + para concatenar devuelve una tupla completamente nueva.
No hay muchos métodos — los dos que vas a usar de verdad son count e index. Se sienten igual que en una list.
| Qué quieres hacer | Cómo escribirlo | Punto clave |
|---|---|---|
| Concatenar | t1 + t2 | Devuelve una tupla nueva; los originales no cambian |
| Añadir un elemento | t + (x,) | No olvides la coma final |
| Contar valores | t.count(x) | Cuántas veces aparece x |
| Encontrar una posición | t.index(x) | Primera posición donde aparece x |
fruits = ("apple", "banana", "lemon")
# Concatenar (devuelve una tupla nueva)
more = fruits + ("grape",)
print(more) # ('apple', 'banana', 'lemon', 'grape')
print(fruits) # ('apple', 'banana', 'lemon') ← el original no cambia
# count e index
nums = (1, 2, 2, 3, 2, 4)
print(nums.count(2)) # 3 (hay tres 2)
print(nums.index(3)) # 3 (3 es el 4.º elemento = índice 3)
# Conversión entre list y tuple
list_fruits = list(fruits) # ['apple', 'banana', 'lemon']
tuple_fruits = tuple(list_fruits) # ('apple', 'banana', 'lemon')
Si quieres seguir editando, convierte a list
Una tupla es para «valores que casi no se mueven», así que no encaja cuando necesitas añadir y quitar elementos a menudo. El patrón estándar: convertir a list con list(t) → editar → volver a convertir con tuple(...) si hace falta.
Desempacar y claves de dict — lo que solo puede hacer una tupla
Hay dos cosas que una tupla puede hacer y una list no: desempacar y servir de clave de dict.
Pon nombres de variables separados por comas al lado izquierdo y cada elemento de la tupla va directo a su propia variable.
La correspondencia es posición por posición, y el número de variables debe igualar al número de elementos.
# Desempacar
coord = (135.0, 35.0)
longitude, latitude = coord
print(longitude) # 135.0
print(latitude) # 35.0
# También puedes desempacar desde un literal
r, g, b = (255, 128, 0)
print(r, g, b) # 255 128 0
# Un truco común: intercambiar dos valores en una línea
a, b = 1, 2
a, b = b, a
print(a, b) # 2 1
El valor de retorno de una función también es una tupla (adelanto)
Una función de Python puede devolver varios valores con return a, b, y esos valores se empaquetan automáticamente como tupla. En el lado que llama, escribir x, y = func() los desempaca en dos variables. El capítulo de funciones viene más adelante, así que no ahondaremos aquí — pero recordar que «múltiples valores de retorno y desempacado van juntos» te hará la vida más fácil después.
La otra virtud es que una tupla se puede usar como clave de dict. Una list no puede ser clave de dict, pero una tuple sí. Es útil cuando quieres usar una combinación de varios valores como una sola clave — como mapear coordenadas a un nombre de país.
# Un dict con claves tuple
country = {
(135.0, 35.0): "Japan",
(-77.0, 38.9): "USA",
}
print(country[(135.0, 35.0)]) # Japan
print(country.get((0.0, 0.0), "Desconocido")) # Desconocido
# Una list no puede ser clave
# bad = {[135.0, 35.0]: "Japan"} # TypeError: unhashable type: 'list'
En este artículo, centrado en las diferencias con una list, has aprendido cómo declarar una tupla, qué significa la inmutabilidad, la concatenación y count / index, y desempacado y claves de dict.
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2Dado t = (1, 2, 3), ¿cuál no provoca un error?
Pregunta 3Para coord = (135.0, 35.0), ¿cuál es la forma más simple de sacar sus dos valores a las variables lng y lat?