Tuplas en Python: Una descripción general
Aprende a acceder a elementos de tuplas en Python mediante índices positivos, negativos, slicing y acceso anidado, con ejemplos ejecutables.
Esta página explica cómo leer datos de una tupla de Python. Aprenderás indexación positiva, indexación negativa, slicing, acceso a tuplas anidadas, el operador in y la función incorporada len(). También verás cuándo las tuplas son la elección correcta sobre las listas.
¿Qué es una tupla?
Una tupla es una secuencia de valores ordenada e inmutable. "Ordenada" significa que cada elemento tiene una posición fija que puedes referenciar por índice. "Inmutable" significa que no puedes cambiar, agregar ni eliminar elementos después de crearla — eso es lo que hace útiles a las tuplas cuando la integridad de los datos importa.
# Create a tuple with parentheses
colors = ("red", "green", "blue")
# The built-in tuple() function works too
digits = tuple([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])Para todo lo que puedes hacer al crear una tupla por primera vez, consulta el capítulo de Tuplas de Python.
Acceder a elementos por índice
Al igual que las listas, las tuplas usan indexación basada en cero: el primer elemento está en el índice 0, el segundo en 1, y así sucesivamente.
Index: 0 1 2
| | |
colors = ("red", "green", "blue")Sintaxis: tuple_name[index]
Acceder a un índice que no existe genera un IndexError:
colors = ("red", "green", "blue")
print(colors[5]) # IndexError: tuple index out of rangeIndexación negativa
Python te permite contar desde el final de la tupla usando números negativos. El índice -1 es el último elemento, -2 es el penúltimo, y así sucesivamente.
Index: 0 1 2
Neg idx: -3 -2 -1
| | |
colors = ("red", "green", "blue")La indexación negativa es especialmente conveniente cuando necesitas el último elemento sin llamar a len().
Slicing de una tupla
Un slice extrae una subtupla. La sintaxis es tuple_name[start:stop] donde start es inclusivo y stop es exclusivo.
fruits = ("apple", "banana", "cherry", "date", "elderberry")
print(fruits[1:3]) # ('banana', 'cherry') — index 1 up to (not including) 3
print(fruits[:3]) # ('apple', 'banana', 'cherry') — from beginning to index 3
print(fruits[2:]) # ('cherry', 'date', 'elderberry') — from index 2 to end
print(fruits[:]) # entire tuple (useful for shallow copy)Puedes agregar un valor de paso como tercer argumento: tuple_name[start:stop:step].
numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(numbers[::2]) # (0, 2, 4, 6, 8) — every second element
print(numbers[::-1]) # (9, 8, 7, 6, 5, 4, 3, 2, 1, 0) — reversedUn slice siempre devuelve una nueva tupla — la original nunca se modifica.
Obtener la longitud con len()
len() devuelve el número de elementos en una tupla.
fruits = ("apple", "banana", "cherry", "date", "elderberry")
print(len(fruits)) # 5Esto es útil para protegerse contra IndexError o para iterar con range():
for i in range(len(fruits)):
print(i, fruits[i])
# 0 apple
# 1 banana
# 2 cherry
# 3 date
# 4 elderberryComprobar pertenencia con in
El operador in comprueba si un valor existe en una tupla, devolviendo True o False.
fruits = ("apple", "banana", "cherry")
print("banana" in fruits) # True
print("mango" in fruits) # False
print("mango" not in fruits) # TrueUsa in en lugar de capturar una excepción cuando simplemente necesitas saber si un valor está presente.
Acceder a tuplas anidadas
Las tuplas pueden contener otras tuplas. Para acceder a un elemento dentro de una tupla anidada, encadena los corchetes de índice.
matrix = ((1, 2), (3, 4), (5, 6))
print(matrix[0]) # (1, 2)
print(matrix[0][1]) # 2 — row 0, column 1
print(matrix[2][0]) # 5 — row 2, column 0La misma técnica funciona para anidamiento mixto, como una tupla de strings y números:
record = ("Alice", 30, ("Python", "SQL"))
print(record[0]) # Alice
print(record[2]) # ('Python', 'SQL')
print(record[2][0]) # PythonOperaciones con tuplas
Aunque no puedes cambiar una tupla, puedes combinar tuplas para producir nuevas.
Concatenar tuplas
Usa + para unir dos o más tuplas:
Repetir tuplas
Usa * para repetir una tupla un número determinado de veces:
Métodos útiles de las tuplas
Las tuplas tienen dos métodos incorporados que te ayudan a leer datos:
| Método | Qué devuelve |
|---|---|
tuple.count(value) | Número de veces que value aparece en la tupla |
tuple.index(value) | Índice de la primera aparición de value |
colors = ("red", "green", "blue", "red", "red")
print(colors.count("red")) # 3
print(colors.index("green")) # 1Para una referencia completa, consulta el capítulo de Métodos de tuplas.
Cuándo usar una tupla en lugar de una lista
| Situación | Tupla | Lista |
|---|---|---|
| Los datos no deben cambiar (coordenadas, valores RGB, filas de base de datos) | Sí | No |
| Se usa como clave de diccionario | Sí | No — las listas no son hashables |
| Ligera ventaja de memoria/velocidad para datos de solo lectura | Sí | No |
| Necesidad de agregar, eliminar u ordenar | No | Sí |
Si necesitas modificar una tupla, consulta Actualizar tuplas para ver la solución común de convertirla a lista y viceversa.
Temas relacionados
- Tuplas de Python — crear tuplas, tuplas de un solo elemento, constructor
tuple() - Desempaquetar tuplas — asignar elementos de una tupla a variables en una sola línea
- Iterar tuplas — iterar sobre una tupla con
forywhile - Actualizar tuplas — alternativas para cambiar el contenido de una tupla
- Unir tuplas — concatenación y técnica con
sum() - Métodos de tuplas —
count()eindex()en profundidad - Listas de Python — la alternativa mutable a las tuplas