Saltar al contenido principal
eLearner.app
Módulo 3 · Lección 2 de 410/36 en el curso~10 min
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

Python
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

Python
nome, anni = ("Ada", 36)
nome   # 'Ada'
anni   # 36

También funciona sin paréntesis (es la coma la que define la tupla):

Python
x, y = 10, 20

Y permite intercambiar valores sin una variable temporal, un modismo puro de Python:

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":

Python
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.

Python
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ú

Ejercicio#python.m3.l2.e1
Intentos: 0Cargando...

Dados `a = 1` y `b = 2`, intercambia sus valores en una sola línea (desempaquetado de tuplas) y evalúa la tupla (a, b).

Cargando editor...
Mostrar pista

a, b = b, a

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#python.m3.l2.e2
Intentos: 0Cargando...

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)`.

Cargando editor...
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

Ejercicio#python.m3.l2.e3
Intentos: 0Cargando...

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`.

Cargando editor...
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