Las tuplas en Python son uno de los cuatro tipos de datos integrados que se usan para almacenar colecciones de datos. Los otros tipos de datos son listas, conjuntos y diccionarios. Cada tipo de dato tiene características únicas y se utiliza de manera diferente.

Tipos de Datos en Python
- Listas: Las listas son secuencias ordenadas y mutables de elementos. Generalmente se usan para almacenar datos del mismo tipo. Sin embargo, también se pueden usar para almacenar elementos que tienen diferentes tipos de datos.
my_list = [1, 2, 3, 4, 5]
print(my_list)
- Conjuntos: Los conjuntos son colecciones no ordenadas y mutables de elementos únicos. Este tipo de dato es útil para realizar operaciones matemáticas con datos.
my_set = {"apple", "banana", "cherry", "apple"}
print(my_set)
Si ejecutas el código anterior, la segunda aparición de la palabra «apple» en el conjunto será ignorada, ya que los conjuntos almacenan solo elementos únicos.
- Diccionarios: Los diccionarios son colecciones no ordenadas y mutables de pares clave-valor. Se utilizan para asociar una clave con un valor (como en un diccionario real).
my_dict = {"Alice": 25, "Bob": 30, "Charlie": 35}
print(my_dict)
- Tuplas: Las tuplas son secuencias ordenadas e inmutables de elementos. Son útiles para almacenar y transmitir datos relacionados que no deben modificarse una vez creados.
my_tuple = ("apple", "banana", "cherry")
print(my_tuple)
Si creas una tupla con varios elementos, puedes omitir los paréntesis, aunque a menudo se usan para mayor claridad.
my_tuple = 1, 2, 3
print(my_tuple)
¿Qué es una Tupla?
Como se mencionó anteriormente, una tupla es una secuencia ordenada e inmutable de elementos. Esto significa que una vez que se crea una tupla, sus elementos no se pueden cambiar.
Aquí tienes un código para crear una tupla:
my_tuple = (1, 2, 3, 'four', 5.0)
En este caso, my_tuple
es una tupla que contiene cinco elementos. Observa que los elementos de una tupla pueden ser de diferentes tipos. Por ejemplo, en el ejemplo anterior, la tupla contiene tres valores de tipo entero, uno de tipo cadena y uno de tipo flotante (o double).
Acceder a los elementos de una tupla es sencillo. Simplemente indícalos por su índice, como en una lista normal.
print(my_tuple[0]) # outputs 1
print(my_tuple[3]) # outputs 'four'
Puedes acceder a varios elementos de una tupla de esta forma:
print(my_tuple[1:3]) # outputs (2, 3)
Toma el código anterior e intenta acceder a un elemento cuyo índice esté fuera del rango de la tupla. Por ejemplo, intenta acceder al elemento con índice 6. ¿Obtienes un error? ¡Intenta averiguarlo!
Una de las principales ventajas de las tuplas (en comparación con las listas) es que se pueden recorrer más rápido y usan la memoria de manera más eficiente. Por eso se consideran una excelente opción para almacenar un conjunto de valores fijos que no necesitan modificarse.
Sin embargo, dado que las tuplas son inmutables, no puedes cambiar sus elementos después de su creación. Por lo tanto, si tu tarea implica modificar un conjunto de elementos, deberás usar listas en lugar de tuplas.
Funciones Principales
Aquí tienes algunos ejemplos de cómo se pueden usar funciones y métodos con tuplas en Python:
len(tupla)
: devuelve la longitud de la tupla.
my_tuple = (1, 2, 3, 'four', 5.0)
print(len(my_tuple)) # outputs 5
tuple(seq)
: convierte una secuencia (como una lista o una cadena) en una tupla.
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
print(my_tuple) # outputs (1, 2, 3)
my_string = 'hello'
my_tuple = tuple(my_string)
print(my_tuple) # outputs ('h', 'e', 'l', 'l', 'o')
tupla.count(valor)
: devuelve la cantidad de apariciones del valor especificado en la tupla.
my_tuple = (1, 2, 3, 2, 2, 'hello')
print(my_tuple.count(2)) # outputs 3
print(my_tuple.count('goodbye')) # outputs 0
Como la tupla my_tuple
no contiene la palabra goodbye
, la salida para esta instrucción específica es 0 (línea 3).
tupla.index(valor)
: devuelve el índice de la primera aparición del valor especificado en la tupla.
my_tuple = (1, 2, 3, 2, 2, 'hello')
print(my_tuple.index(2)) # outputs 1
print(my_tuple.index('hello')) # outputs 5
#print(my_tuple.index(4)) # arrojará un error
Observa que si buscas un valor que no está en la tupla my_tuple
, obtendrás un error ValueError: x not in tuple
. Puedes probarlo tú mismo descomentando la última línea de código.
- Las funciones
max(tupla)
ymin(tupla)
devuelven el valor máximo y mínimo de la tupla, respectivamente. Si la tupla solo contiene cadenas,min(tupla)
devolverá la cadena que esté primero en orden alfabético, ymax(tupla)
devolverá la que esté al final. Finalmente, si la tupla contiene números y cadenas, ambas funciones generarán un error.
my_tuple = (1, 2, 3, 4, 5)
print(max(my_tuple)) # outputs 5
print(min(my_tuple)) # outputs 1
alphabetical_tuple = ("apple", "banana", "giraffe", "fox", "eel")
print(max(alphabetical_tuple)) # outputs giraffe
print(min(alphabetical_tuple)) # outputs apple
alphanumeric_tuple = (1, "apple", 2, "dog")
#print(max(alphanumeric_tuple)) # error
#print(min(alphanumeric_tuple)) # error
sorted(tupla)
: devuelve una nueva lista ordenada de los elementos de la tupla.
my_tuple = (3, 1, 4, 1, 5, 9, 2)
sorted_tuple = sorted(my_tuple)
print(sorted_tuple) # outputs [1, 1, 2, 3, 4, 5, 9]
any(tupla)
: devuelveTrue
si al menos un elemento de la tupla es verdadero, de lo contrario devuelveFalse
.
Nota: muchos valores en Python se pueden considerar como True
o False
.
True
yFalse
son literales booleanos que representan verdad y falsedad, respectivamente.- Los enteros 0 y 1 se consideran
False
yTrue
, respectivamente. - Una cadena vacía
""
se consideraFalse
, mientras que cualquier cadena no vacía se consideraTrue
. - Una tupla vacía
()
o una lista vacía[]
se consideraFalse
, mientras que cualquier tupla o lista no vacía se consideraTrue
. None
se consideraFalse
.
Por lo tanto, para una tupla como (0, False, "", None)
, la función any()
devolverá False
, ya que todos los elementos de la tupla se consideran False
. Sin embargo, para una tupla como (1, True, "hello")
, la función any()
devolverá True
, ya que al menos un elemento de la tupla tiene el valor True
.
my_tuple1 = (False, 0, None, '', ())
my_tuple2 = (False, 0, None, '', (), True)
print(any(my_tuple1)) # outputs False
print(any(my_tuple2)) # outputs True
all(tupla)
: devuelveTrue
si todos los elementos de la tupla son verdaderos, de lo contrario devuelveFalse
. Ten en cuenta que una cadena vacía se considera un valor falso (False
).
my_tuple1 = (True, 1, 'hello', [1, 2, 3])
my_tuple2 = (True, 1, '', [1, 2, 3])
print(all(my_tuple1)) # outputs True
print(all(my_tuple2)) # outputs False
- La suma de tuplas se utiliza para combinar dos o más tuplas en una sola.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = tuple1 + tuple2
print(tuple3) #outputs (1, 2, 3, 4, 5, 6)
- La multiplicación de una tupla por un número se utiliza para crear una nueva tupla que contiene los elementos de la tupla existente, repetidos un número determinado de veces.
my_tuple = ("apple", "banana")
new_tuple = my_tuple * 3
print(new_tuple) # outputs ('apple', 'banana', 'apple', 'banana', 'apple', 'banana')
En el ejemplo anterior, definimos la tupla my_tuple
que contiene dos valores de cadena. Luego, usamos el operador *
para crear una nueva tupla new_tuple
repitiendo los elementos de la tupla my_tuple
tres veces.
Ten en cuenta que tuple1 + tuple2
y tuple1 * n
en los ejemplos anteriores son expresiones ordinarias que combinan o realizan cortes de tuplas, y no requieren ninguna función o método adicional.
Empaquetado y Desempaquetado de Tuplas
El empaquetado implica combinar una secuencia de valores en una sola tupla. Para hacerlo, debes escribir los valores separados por comas entre paréntesis.
my_tuple = (1, 2, 'three')
En este caso, los valores 1, 2 y ‘three’ se combinaron en una tupla que, a su vez, se asignó a la variable my_tuple
.
En cuanto al desempaquetado, implica extraer los valores de una tupla y asignarlos a variables separadas. Esto se puede hacer colocando varios nombres de variables separados por comas en el lado izquierdo del operador de asignación y asignándoles la tupla. En el ejemplo anterior, asignábamos algunos valores a la variable my_tuple
. En este ejemplo, la tupla my_tuple
se desempaqueta y estos valores se asignan a las variables a
, b
y c
respectivamente.
a, b, c = my_tuple
print(a) #outputs 1
print(b) #outputs 2
print(c) #outputs 'three'
¿Qué sucede si en el código anterior para desempaquetar los valores de la tupla my_tuple
solo usamos las variables a
y b
? Recuerda que la tupla my_tuple
contiene tres elementos. Si haces eso, obtendrás un error ValueError: too many values to unpack (expected 2)
. Puedes probarlo tú mismo, corrigiendo el código anterior. También puedes ver qué sucede si usas cuatro variables: a
, b
, c
y d
.
Tuplas Anidadas
Las tuplas anidadas son tuplas que contienen otras tuplas como elementos.
Para crear una tupla anidada, simplemente debes agregar una o más tuplas separadas por comas dentro de otra tupla:
my_tuple = ((1, 2), (3, 4), (5, 6))
my_tuple
en el ejemplo anterior es una tupla anidada que contiene tres tuplas, cada una de las cuales contiene dos enteros.
Para acceder a los elementos de una tupla anidada, se utiliza la indexación normal o la indexación anidada.
print(my_tuple[0]) # outputs (1, 2)
print(my_tuple[1][0]) # outputs 3
print(my_tuple[2][1]) # outputs 6
La primera instrucción print
imprime el primer elemento de la tupla my_tuple
, que es la tupla (1, 2)
. La segunda instrucción utiliza indexación anidada para acceder al primer elemento de la segunda tupla, que es 3. La tercera instrucción también utiliza indexación anidada, pero aquí accedemos al segundo elemento de la tercera tupla, que es 6.
Tuplas como Claves en un Diccionario
Además, las tuplas se pueden usar como claves en un diccionario. Como las tuplas no se pueden modificar una vez creadas, se pueden usar como claves confiables e inmutables en un diccionario.
Aquí tienes un ejemplo de cómo crear un diccionario con tuplas como claves:
my_dict = {('apple', 1): 'red', ('banana', 2): 'yellow', ('orange', 3): 'orange'}
La clave en este caso es una tupla que contiene una fruta y un número. Los valores son cadenas que representan los colores de las frutas.
Puedes acceder a los valores del diccionario utilizando las tuplas que funcionan como claves:
print(my_dict[('apple', 1)]) # outputs 'red'
print(my_dict[('banana', 2)]) # outputs 'yellow'
print(my_dict[('orange', 3)]) # outputs 'orange'
Ventajas de las Tuplas
Las tuplas tienen varias ventajas en comparación con otros tipos de datos, como:
- Inmutabilidad: las tuplas son inmutables, es decir, no puedes cambiar su contenido después de crearlas. Esto hace que las tuplas sean un tipo de dato más seguro, menos propenso a errores accidentales que los tipos de datos mutables como las listas. Estas últimas pueden modificarse involuntariamente en otras partes del programa.
- Ordenación: las tuplas son conjuntos ordenados de elementos, lo que puede ser muy útil si necesitas almacenar datos relacionados a los que necesitas acceder en un orden específico.
- Mejor rendimiento: las tuplas funcionan mucho más rápido que las listas, ya que requieren menos memoria y pueden ser optimizadas por el intérprete de Python.
- Adecuadas como claves: las tuplas se pueden usar como claves en los diccionarios, mientras que las listas no. Por lo tanto, si quieres crear un diccionario que asocie datos relacionados entre sí, puedes usar tuplas como claves del diccionario.
- Resultados de la función: las tuplas se usan a menudo para que una función pueda devolver varios valores, ya que pueden contener cualquier cantidad de elementos y se pueden desempaquetar fácilmente. Aquí tienes un ejemplo en el que una función devuelve varios valores empaquetados en la tupla
return_tuple
.
def calculate_statistics(numbers):
n = len(numbers)
total = sum(numbers)
mean = total / n
variance = sum((x - mean) ** 2 for x in numbers) / n
stdev = variance ** 0.5
return_tuple = (total, mean, stdev)
return return_tuple
my_numbers = [1, 2, 3, 4, 5]
total, mean, stdev = calculate_statistics(my_numbers)
print("Total:", total)
print("Mean:", mean)
print("Standard deviation:", stdev)
Desventajas de las Tuplas
Aunque las tuplas tienen varias ventajas (en comparación con otros tipos de datos en Python), también tienen algunas desventajas. Estas son algunas de ellas:
- Inmutabilidad: la inmutabilidad puede ser una ventaja y una desventaja. Como las tuplas son inmutables, para realizar cambios en ellas debes crear una nueva tupla. Si creas muchas tuplas, esto puede llevar mucho tiempo y aumentar la cantidad de memoria utilizada.
- Funcionalidad limitada: en comparación con otros tipos de datos, como las listas, las tuplas tienen una funcionalidad limitada. Por ejemplo, las tuplas no tienen métodos como
append()
,insert()
oremove()
, que sí tienen las listas. - No son adecuadas para grandes conjuntos de datos: las tuplas no son adecuadas para grandes conjuntos de datos, ya que se almacenan en la memoria y, si contienen demasiados elementos, pueden ocupar mucho espacio. En situaciones con grandes conjuntos de datos, son más adecuados tipos de datos como matrices o generadores.
- Dificultad para leer: en algunas situaciones, las tuplas pueden ser más difíciles de leer que otros tipos de datos, como las listas (especialmente si la tupla contiene muchos elementos). Esto se debe a que las tuplas suelen escribirse entre paréntesis y separadas por comas, lo que puede resultar visualmente confuso para algunos programadores.
Conclusión y Puntos Clave
Las tuplas son un tipo de dato fundamental en Python que permite almacenar y gestionar colecciones de valores. En este artículo, hemos cubierto los conceptos básicos de la creación de tuplas normales y anidadas, el acceso a ellas, el empaquetado y desempaquetado de tuplas, así como el uso de tuplas como claves en los diccionarios.
Aquí tienes algunos puntos clave que no debes olvidar:
- Las tuplas son inmutables.
- Se puede acceder a los elementos individuales de una tupla mediante índices (como en el caso de las listas).
- Las tuplas se pueden utilizar como claves en los diccionarios, lo que las convierte en una excelente herramienta para gestionar datos.
- El empaquetado de tuplas permite combinar varios valores en una sola tupla.
- El desempaquetado de tuplas permite asignar los elementos de una tupla a varias variables a la vez.
- Las tuplas anidadas se pueden utilizar para representar estructuras de datos más complejas.