Pitón

Cómo usar la función Zip en Python

Cómo usar la función Zip en Python
Este artículo cubrirá una guía sobre la función "zip" disponible en la biblioteca de módulos estándar de Python. Este método le permite combinar y emparejar elementos de múltiples objetos iterables. Luego puede ejecutar más lógica en estos pares. En muchos casos, usar una función "zip" es mucho más eficiente y más limpio que usar múltiples bucles "for" anidados.

Acerca de la función Zip

Como se indicó anteriormente, la función "zip" se utiliza para crear pares a partir de elementos de varios objetos iterables. Considere el siguiente ejemplo para comprender la sintaxis básica y el uso de la función zip:

lista1 = ["a", "b", "c"]
list2 = ["manzana", "pelota", "gato"]
zip = zip (lista1, lista2)
imprimir (lista (comprimida))

Las dos primeras declaraciones en el ejemplo de código anterior definen dos listas que contienen algunos elementos. A continuación, la función "zip" se utiliza pasando las variables "list1" y "list2" como argumentos. Esta es la sintaxis principal de la función "zip". Solo tiene que pasar listas u otros iterables ordenados válidos como argumentos cuyos elementos desea combinar. Por último, la declaración de impresión se utiliza para obtener el resultado de la variable "comprimida". Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado:

[('a', 'manzana'), ('b', 'pelota'), ('c', 'gato')]

Tenga en cuenta que la función "zip" devuelve un objeto de tipo "zip" y no una lista. Debe convertirlo a un tipo iterable, como se muestra en la declaración de impresión anterior.

En términos simples, la función "zip" recoge elementos del mismo índice de dos listas y los combina como un par en una tupla. Entonces, el elemento 0 de "lista1" se combina con el elemento 0 de "lista2", el primer elemento de "lista1" se combina con el primer elemento de "lista2" y así sucesivamente. La función Zip se mueve de izquierda a derecha y la tupla que contiene elementos emparejados tiene el mismo índice que los elementos almacenados en ellos.

Uso de Zip cuando los iterables no tienen el mismo número de elementos

En el ejemplo anterior, ambas listas tienen el mismo número de elementos. En caso de que se trate de un código en el que ambas listas no tienen el mismo número de elementos, la función "zip" se detendrá en el último elemento de la lista que tenga el menor número de elementos.

En el siguiente ejemplo, la función "zip" se detendrá en el elemento "c", independientemente de que "list2" tenga un elemento más.

lista1 = ["a", "b", "c"]
list2 = ["manzana", "pelota", "gato", "muñeca"]
zip = zip (lista1, lista2)
imprimir (lista (comprimida))

Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado:

[('a', 'manzana'), ('b', 'pelota'), ('c', 'gato')]

Puede utilizar más de dos iterables al utilizar la función Zip

Por lo general, la función "zip" se usa para comparar dos objetos iterables. Sin embargo, puede pasar cualquier número de iterables como argumentos a la función "zip". El principio de detenerse en el último elemento de la lista más corta seguirá siendo aplicable.

lista1 = ["a", "b", "c"]
list2 = ["manzana", "pelota", "gato", "muñeca"]
list3 = ["5", "3"]
zip = zip (lista1, lista2, lista3)
imprimir (lista (comprimida))

Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado como resultado:

[('a', 'manzana', '5'), ('b', 'bola', '3')]

Creación de listas individuales a partir de un objeto de tipo zip

Si ya tiene un objeto "zip", puede usarlo para volver a llenar listas individuales que se usaron anteriormente cuando se llamó por primera vez a la función zip.

lista1 = ["a", "b", "c"]
list2 = ["manzana", "pelota", "gato", "muñeca"]
list3 = ["5", "3"]
zip = zip (lista1, lista2, lista3)
l1, l2, l3 = zip (* comprimido)
imprimir (lista (l1), lista (l2), lista (l3))

Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado como resultado:

['a', 'b'] ['manzana', 'pelota'] ['5', '3']

En el ejemplo de código anterior, el objeto "zip" se desinfla mediante el operador "*". Los resultados desinflados se introducen en otra función de llamada a zip que crea listas originales. Tenga en cuenta que es posible que no recupere todos los elementos en las listas originales si se utilizaron listas de diferente longitud cuando se creó el objeto "zip" por primera vez.

Uso de Zip cuando desea evitar que los elementos sean iterables durante más tiempo

En varios ejemplos anteriores, es posible que haya observado que la función "zip" de forma predeterminada se detiene en el último elemento del iterable más corto. ¿Qué sucede si desea que continúe iterando hasta que alcance el último elemento del iterable más largo??

En tal caso, tendrá que usar el método "zip_longest ()" del módulo "itertools" de Python. Funciona igual que la función "zip", con una pequeña diferencia de que se detiene en el último elemento del tipo iterable más largo.

desde itertools importar zip_longest
lista1 = ["a", "b", "c"]
list2 = ["manzana", "pelota", "gato", "muñeca"]
list3 = ["5", "3"]
zipped = zip_longest (lista1, lista2, lista3)
imprimir (lista (comprimida))

Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado como resultado:

[('a', 'manzana', '5'), ('b', 'pelota', '3'), ('c', 'gato', Ninguno), (Ninguno, 'muñeca', Ninguno) ]

Los valores que faltan se completan como objetos de tipo "Ninguno". También puede proporcionar su propio valor para completar pasando un argumento "fillvalue" adicional al método "zip_longest".

desde itertools importar zip_longest
lista1 = ["a", "b", "c"]
list2 = ["manzana", "pelota", "gato", "muñeca"]
list3 = ["5", "3"]
zipped = zip_longest (list1, list2, list3, fillvalue = "my_value")
imprimir (lista (comprimida))

Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado como resultado:

[('a', 'manzana', '5'), ('b', 'pelota', '3'), ('c', 'gato', 'mi_valor'), ('mi_valor', 'muñeca ',' my_value ')]

Conclusión

La función Zip se puede emular usando algunos bucles y declaraciones de condiciones. Sin embargo, ayuda a mantener el código organizado y más limpio al eliminar la verbosidad innecesaria y las declaraciones repetitivas.

Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....
Herramientas útiles para jugadores de Linux
Si le gusta jugar juegos en Linux, es probable que haya utilizado aplicaciones y utilidades como Wine, Lutris y OBS Studio para mejorar la experiencia...
Juegos HD remasterizados para Linux que nunca tuvieron un lanzamiento de Linux antes
Muchos desarrolladores y editores de juegos están creando una remasterización HD de juegos antiguos para extender la vida útil de la franquicia, por f...