Python

Desempaquetado en Python de una tupla o lista

En algunas ocasiones, como puede ser los valores que devuelve una función, nos podemos encontrar con una tupla, o lista, que contiene varios valores de los cuales solamente nos interesan unos pocos. Por lo que extraer solamente estos valores y quedarnos con los necesarios puede simplificar los posteriores análisis. Algo que se puede conseguir mediante el desempaquetado en Python de una tupla o lista. Una tarea más sencilla de lo que parece.

Desempaquetando en Python de una tupla

Supongamos que en una sesión de Python se tienen en la variable datos una tupla con tres valores. En el caso de que se desee extraer cada uno de estos valores a una variable diferente se puede conseguir seleccionado cada uno de ellos usando los índices y asignándoles a cada una de ellas. Aunque existe una opción más sencilla, el desempaquetado de la tupla. Algo que simplemente requiere escribir entre paréntesis, o corchetes, el nombre de tres variables y asignar a este la tupla. Lo que se puede ver en el siguiente código.

datos = ('Elemento 1', 'Elemento 2', 'Elemento 3')

(var1, var2, var3) = datos

print(var1)
print(var2)
print(var3)
Elemento 1
Elemento 2
Elemento 3

Un ejemplo en el que primero se crean una tupla con tres cadenas de texto y posteriormente se asigna cada una de estas cadenas a una variable. Lo que se puede comprobar sacando por pantalla cada una de las variables.

El número de variables tiene que ser igual al de elementos

A la hora de desempaquetar en Python de una tupla es necesario tener en cuenta que es necesario indicar tantas variables como elementos. En caso contrario se producirá un error, algo que se puede comprobar ejecutando el siguiente código.

(var1, var2) = datos
ValueError                                Traceback (most recent call last)
Input In [2], in <cell line: 1>()
----> 1 (var1, var2) = datos

ValueError: too many values to unpack (expected 2)

Produciendo un error que nos indica que hay demasiados valores para desempaquetar. Sucediendo algo similar en el caso contrario, cuando hay demasiados valores como sucede en el siguiente ejemplo.

(var1, var2, var3, var4) = datos
ValueError                                Traceback (most recent call last)
Input In [3], in <cell line: 1>()
----> 1 (var1, var2, var3, var4) = datos

ValueError: not enough values to unpack (expected 4, got 3)

Aunque en este caso el error generado es diferente, señalando que hay pocos valores para desempaquetar.

Uso de * para guardar valores en una tupla

Cuando se desconoce el número de elementos, o solamente se desean los primeros, se puede usar * antes de la última variable para indicar que el resto de los objetos de carguen en esta. Así el último elemento será una nueva tupla con todos los valores no asignados. En el siguiente trozo de código se puede ver el funcionamiento de este modificador.

(var1, *var2) = datos

print(var1)
print(var2)
Elemento 1
['Elemento 2', 'Elemento 3']

En los resultados se puede ver que los dos últimos valores se han cargado en una nueva lista.

Desempaquetando en Python de una lista

Lo que se ha visto hasta ahora para las tuplas aplica también para las listas sin necesidad de hacer ningún cambio. El siguiente código, donde datos es ahora una lista, funciona igual que los ejemplos anteriores.

datos = ['Elemento 1', 'Elemento 2', 'Elemento 3']

(var1, var2, var3) = datos

print(var1)
print(var2)
print(var3)
Elemento 1
Elemento 2
Elemento 3

Conclusiones

El proceso de desempaquetado en Python de una tupla o lista es una operación sencilla con la que se puede asignar el contenido de uno de estos objetos a unas variables. Haciendo que el código sea más fácil de leer al poder asignar un nombre significativo a cada una de las variables.

Imagen de Mediamodifier en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

1 día ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

6 días ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

1 semana ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

2 semanas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

Cómo Comparar Dos Hipotecas con Todos los Gastos Incluidos

Comparar dos hipotecas parece sencillo: la que tenga el TIN más bajo es la mejor…

3 semanas ago

This website uses cookies.