Skip to content

Instantly share code, notes, and snippets.

@hchocobar
Last active October 5, 2023 14:27
Show Gist options
  • Save hchocobar/f80190a0f18c050340d4d8ebd6cbf6ae to your computer and use it in GitHub Desktop.
Save hchocobar/f80190a0f18c050340d4d8ebd6cbf6ae to your computer and use it in GitHub Desktop.
Python - Desectructuración de list, dict, tuple

Desestructuración en Python

En Python, la desestructuración nos permite asignar las propiedades de una lista a variables individuales. De hecho la desestructuración no se limita a listas, también puedes desestructurar otros iterables, tales como tuplas, diccionarios y cadenas.

Nota: En Python a desestructurar también se le llama desempaquetar.

Python permite asignar más de una variable al mismo tiempo y en una sola línea de código. Solo necesitas añadir el mismo número de valores a cada lado de la asignación, los valores son asignados según el orden, el primero con el primero, el segundo con el segundo etc…

foo, bar = (1, 2)

print(foo)  # Output: 1
print(bar)  # Output: 2
order, name, city = [1, 'Joe', 'New York']

print(order)  # Output: 1
print(name)  # Output: 'Joe'
print(city)  # Output: 'New York'

Si intentas añadir más valores de los que existen en el iterable obtendrás un error:

foo, bar, baz, qux = (1, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 4, got 2)

Desestructurar una lista en Python

Puedes desempaquetar una lista sin saber cuantos elementos contiene utilizando el asterisco *

first, *rest = [1, 2, 3, 4, 5]

print(first)  # Output: 1
print(rest)  # Output: [2, 3, 4, 5]

Ignorar valores en la asignación al desestructurar

Puedes ingorar valores al desestructurar utilizando un guión bajo _

name, _, lastname = ['Alvaro', 'Gabriel', 'Guerrero']

print(name)  # Output: Alvaro
print(lastname)  # Output: Guerrero

Ignorar múltiples valores

Puedes ignorar múltiples valores con la siguiente sintaxis *_

foo, *_ = [1, 2, 3, 4, 5]

print(foo)  # Output: 1

Ignorar todos los valores menos el primero y el último.

foo, *_, bar = [1, 2, 3, 4, 5]

print(foo, bar)  # Output: 1 5

Obtener todos los valores intermedios pero ignorar el primer y el último valor.

_, *middle, _ = [1, 2, 3, 4, 5]
print(middle)  # Output: [2, 3, 4]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment