DMarlon Studio

Lección 12 · 12 de 20

Tuplas y desempaquetado · Python

Use tuplas de Python para datos que no cambian y desempaquételos en varias variables de una vez, también dentro de un bucle for.

Python · Tuplas y desempaquetado en DMarlon Studio: el código del ejemplo y su salida en la terminal

Una tupla es como una lista, pero entre paréntesis y sin poder cambiarla después de crearla. Sirve para datos que van juntos y fijos, como un punto (3, 7): sus valores se leen igual que en una lista, point[0] y point[1].

El desempaquetado reparte los valores de una tupla entre varias variables en una sola línea: x, y = point deja x = 3 e y = 7. Tiene que haber tantas variables como valores; así se hace con la ciudad: nombre, altitud y población.

Con el mismo truco se intercambian dos variables sin una auxiliar: left, right = right, left. Python arma primero la tupla de la derecha y luego la reparte.

Una lista de tuplas es muy práctica para tablas. En for medal, runner in podium: cada vuelta recibe una tupla y la desempaqueta en medal y runner; {medal:>6} alinea las medallas a la derecha.

Algunas funciones devuelven una tupla. divmod(200, 60) da a la vez la división entera y el resto, (3, 20): 200 segundos son 3 minutos y 20 segundos.

Código · main.py

# A tuple is like a list that cannot change. It uses ( ).point = (3, 7)print("Point:", point)print("x =", point[0], "| y =", point[1])# Unpacking: give each value its own name in one line.x, y = pointprint(f"One step right: ({x + 1}, {y})")# Tuples suit fixed records: name, altitude, population.city = ("Madrid", 667, 3.3)name, altitude, population = cityprint(f"{name}: {altitude} m high, {population} million people")# Swap two variables without a spare one.left, right = "rock", "paper"left, right = right, leftprint("left =", left, "| right =", right)# A list of tuples, unpacked right in the for loop.podium = [("gold", "Ana"), ("silver", "Ben"), ("bronze", "Chloe")]for medal, runner in podium:    print(f"{medal:>6}: {runner}")# A function such as divmod() can return a tuple.minutes, seconds = divmod(200, 60)print(f"200 seconds = {minutes} min {seconds} s")

Salida · python3 main.py

Point: (3, 7)
x = 3 | y = 7
One step right: (4, 7)
Madrid: 667 m high, 3.3 million people
left = paper | right = rock
  gold: Ana
silver: Ben
bronze: Chloe
200 seconds = 3 min 20 s

Para recordar

  • Una tupla va entre ( ) y no se puede modificar.
  • a, b = tupla reparte sus valores en variables.
  • a, b = b, a intercambia dos variables.
  • En un for se puede desempaquetar cada tupla de una lista.

Ejercicio

Cree una lista de tuplas con tres ciudades (nombre, temperatura de hoy) y escriba cada una con su temperatura; después, intercambie la primera y la última.