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)
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]
Puedes ingorar valores al desestructurar utilizando un guión bajo _
name, _, lastname = ['Alvaro', 'Gabriel', 'Guerrero']
print(name) # Output: Alvaro
print(lastname) # Output: Guerrero
Puedes ignorar múltiples valores con la siguiente sintaxis *_
foo, *_ = [1, 2, 3, 4, 5]
print(foo) # Output: 1
foo, *_, bar = [1, 2, 3, 4, 5]
print(foo, bar) # Output: 1 5
_, *middle, _ = [1, 2, 3, 4, 5]
print(middle) # Output: [2, 3, 4]