W3docs

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]

python— editable, runs on the server

Acceder a un índice que no existe genera un IndexError:

colors = ("red", "green", "blue")
print(colors[5])  # IndexError: tuple index out of range

Indexació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")
python— editable, runs on the server

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)  — reversed

Un 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))  # 5

Esto 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 elderberry

Comprobar 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)  # True

Usa 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 0

La 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])    # Python

Operaciones con tuplas

Aunque no puedes cambiar una tupla, puedes combinar tuplas para producir nuevas.

Concatenar tuplas

Usa + para unir dos o más tuplas:

python— editable, runs on the server

Repetir tuplas

Usa * para repetir una tupla un número determinado de veces:

python— editable, runs on the server

Métodos útiles de las tuplas

Las tuplas tienen dos métodos incorporados que te ayudan a leer datos:

MétodoQué 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"))  # 1

Para una referencia completa, consulta el capítulo de Métodos de tuplas.

Cuándo usar una tupla en lugar de una lista

SituaciónTuplaLista
Los datos no deben cambiar (coordenadas, valores RGB, filas de base de datos)No
Se usa como clave de diccionarioNo — las listas no son hashables
Ligera ventaja de memoria/velocidad para datos de solo lecturaNo
Necesidad de agregar, eliminar u ordenarNo

Si necesitas modificar una tupla, consulta Actualizar tuplas para ver la solución común de convertirla a lista y viceversa.

Temas relacionados

Práctica

Práctica
¿Cuáles son las formas de acceder a elementos en una tupla de Python?
¿Cuáles son las formas de acceder a elementos en una tupla de Python?
Was this page helpful?