Lecciones del módulo (2/4)
Tuplas y desempaquetado
Una tupla es una secuencia ordenada e inmutable: una vez creada, no puedes cambiar sus elementos. Se escribe con paréntesis (aunque lo que realmente la define es la coma).
Crear una tupla
vuota = ()
una = (42,) # ATENCIÓN: sin coma, (42) es solo 42 entre paréntesis
coords = (10, 20)
mista = ("Ada", 36, True)El acceso por índice y el rebanado (slicing) funcionan exactamente igual que para las listas: coords[0],
coords[-1], mista[:2].
Cuándo usar una tupla en lugar de una lista
- Cuando el valor representa una colección fija que no debe cambiar
(coordenadas, una fecha como
(año, mes, día), una versión(1, 2, 3)). - Cuando necesitas usar el valor como clave de diccionario o como elemento de
un conjunto (
set): solo se pueden usar objetos inmutables (hashables). - Cuando quieres señalar al lector del código que ese valor está "congelado".
Desempaquetado: la característica que cambia cómo escribes Python
nome, anni = ("Ada", 36)
nome # 'Ada'
anni # 36También funciona sin paréntesis (es la coma la que define la tupla):
x, y = 10, 20Y permite intercambiar valores sin una variable temporal, un modismo puro de Python:
a, b = 1, 2
a, b = b, a
a, b # (2, 1)Desempaquetado con * (resto)
Cuando quieres capturar "el primero y el resto" o "el primero, el último y el medio":
primo, *resto = [1, 2, 3, 4, 5]
primo # 1
resto # [2, 3, 4, 5]
primo, *centro, ultimo = [1, 2, 3, 4, 5]
centro # [2, 3, 4]Esto se llama asignación con asterisco (starred assignment): el asterisco recopila todo lo que queda en una lista.
La trampa de la tupla de un solo elemento
(42) no es una tupla, es el número 42 dentro de paréntesis. Para hacer una tupla de un solo
elemento necesitas la coma: (42,). Sin ella, cualquier operación fallará de forma confusa.
x = (42)
type(x) # <class 'int'>
x = (42,)
type(x) # <class 'tuple'>Tuplas de un solo elemento
Para crear una tupla que contenga un solo elemento, los paréntesis solos no bastan: debes insertar una coma al final, por ejemplo t = (42,). Sin la coma, Python treats the paréntesis como una simple agrupación matemática, creando un entero simple 42.
Pruébalo tú
Dados `a = 1` y `b = 2`, intercambia sus valores en una sola línea (desempaquetado de tuplas) y evalúa la tupla (a, b).
Mostrar pista
a, b = b, a
Solución disponible después de 3 intentos
Ejercicio de repaso
De la lista `voti = [7, 5, 8, 6, 9]`, usa el desempaquetado para extraer la primera nota en `primo`, la última en `ultimo` y las restantes en `centro`. Evalúa `(primo, centro, ultimo)`.
Mostrar pista
primo, *centro, ultimo = voti → primo=7, centro=[5,8,6], ultimo=9.
Solución disponible después de 3 intentos
Desafío adicional
Dada la tupla `point = (4, 5, 6)`, usa el desempaquetado para asignar los tres valores a las variables `x`, `y`, `z` respectivamente. Luego, calcula la suma de `x`, `y` y `z` y guárdala en `coord_sum`. Finalmente, evalúa `coord_sum`.
Mostrar pista
Usa x, y, z = point para extraer las tres coordenadas en una sola instrucción.
Solución disponible después de 3 intentos