Cómo usar la función Zip en Python

How Use Zip Function 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. A continuación, 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 usa para crear pares a partir de elementos de múltiples objetos iterables. Considere el siguiente ejemplo para comprender la sintaxis básica y el uso de la función zip:







list1= ['a', 'b', 'c']
list2= ['manzana', 'bola', 'gato']
cremallera= Código Postal(list1,list2)
impresión (lista(cremallera))

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 la salida 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 list1 se combina con el elemento 0 de list2, el primer elemento de list1 se combina con el primer elemento de list2 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.



list1= ['a', 'b', 'c']
list2= ['manzana', 'bola', 'gato', 'muñeca']
cremallera= Código Postal(list1,list2)
impresión (lista(cremallera))

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.

list1= ['a', 'b', 'c']
list2= ['manzana', 'bola', 'gato', 'muñeca']
list3= ['5', '3']
cremallera= Código Postal(list1,list2,list3)
impresión (lista(cremallera))

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.

list1= ['a', 'b', 'c']
list2= ['manzana', 'bola', 'gato', 'muñeca']
list3= ['5', '3']
cremallera= Código Postal(list1,list2,list3)
l1,l2,l3= Código Postal(* con cremallera)
impresión (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 con el operador *. Los resultados desinflados se introducen en otra llamada a la función 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 longitud desigual 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 se detiene de forma predeterminada 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.

de itertools importarzip_longest
list1= ['a', 'b', 'c']
list2= ['manzana', 'bola', 'gato', 'muñeca']
list3= ['5', '3']
cremallera=zip_longest(list1,list2,list3)
impresión (lista(cremallera))

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.

de itertools importarzip_longest
list1= ['a', 'b', 'c']
list2= ['manzana', 'bola', 'gato', 'muñeca']
list3= ['5', '3']
cremallera=zip_longest(list1,list2,list3,fillvalue='mi_valor')
impresión (lista(cremallera))

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.