Las tuplas en Python son una estructura de datos muy similar a las listas, con una diferencia clave: son inmutables, es decir, no pueden ser modificadas una vez que han sido creadas. Esto las hace ideales para representar datos que no deben cambiar durante la ejecución del programa.
Las tuplas se definen utilizando paréntesis
(), aunque en algunos casos pueden crearse incluso sin ellos, separando los
elementos por comas:
# Tupla con paréntesis
coordenadas = (10.0, 20.0)
# Tupla sin paréntesis
colores = "rojo", "verde", "azul"
# Tupla de un solo elemento (se necesita la coma)
uno = (5,)
Si no se coloca la coma al final en una tupla de un solo elemento, Python lo interpretará como un dato individual, no como una tupla.
Al igual que en las listas, se accede a los elementos mediante índices:
dias = ("lunes", "martes", "miércoles")
print(dias[0]) # lunes
print(dias[-1]) # miércoles
Si intentamos modificar una tupla, Python generará un
TypeError:
dias[0] = "domingo" # Error: 'tuple' object does not support item assignment
Las tuplas pueden contener otras tuplas u otras estructuras de datos:
info = ("Python", (3, 9), ["estable", "rápido"])
print(info[1][0]) # 3
Podemos transformar una lista a una tupla utilizando la función tuple():
numeros = [1, 2, 3]
tupla_numeros = tuple(numeros)
print(tupla_numeros) # (1, 2, 3)
Las tuplas se pueden recorrer igual que las listas:
animales = ("perro", "gato", "pez")
for animal in animales:
print(animal)
Podemos asignar los valores de una tupla a múltiples variables en una sola línea.
persona = ("Ana", 30, "México")
nombre, edad, pais = persona
print(nombre) # Ana
print(edad) # 30
print(pais) # México
Las tuplas, al ser inmutables, tienen pocos métodos disponibles. Los dos más comunes son:
Cuenta cuántas veces aparece elelemento x en la tupla.
letras = ("a", "b", "a", "c", "a")
print(letras.count("a")) # 3
Devuelve el índice de la primera aparición del elemento x. Se puede usar un segundo parámetro opcional (start) para comenzar la búsqueda desde un índice específico.
numeros = (10, 20, 30, 20, 40)
print(numeros.index(20)) # 1
print(numeros.index(20, 2)) # 3
Usa una tupla cuando: