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, el uso de una función de "zip" es mucho más eficiente y más limpia que el uso de múltiples bucles "para" "para".

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 = ["Apple", "Ball", "Cat"]
Zipped = zip (list1, list2)
Imprimir (Lista (con cremallera))

Las dos primeras declaraciones en la muestra de código anterior definen dos listas que contienen algunos elementos. A continuación, la función "zip" se usa al aprobar variables "list1" y "list2" como argumentos. Esta es la principal sintaxis de la función "zip". Solo tiene que aprobar listas u otros iterables ordenados válidos como argumentos cuyos elementos desea combinar. Por último, la instrucción de impresión se usa para obtener la salida de la variable "con zonas". Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida:

[('' A ',' Apple '), (' B ',' Ball '), (' C ',' Cat ')]]

Tenga en cuenta que la función "zip" devuelve un objeto de tipo "zip" y no una lista. Debe convertirlo en 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.

Usar zip cuando iterables no tiene el mismo número de elementos

En el ejemplo indicado anteriormente, ambas listas tienen el número igual de elementos. En caso de que esté tratando con algún código donde ambas listas no tengan el mismo número de elementos, la función "zip" se detendrá en el último elemento de la lista que tiene el número más bajo de elementos.

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

list1 = ["A", "B", "C"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
Zipped = zip (list1, list2)
Imprimir (Lista (con cremallera))

Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida:

[('' A ',' Apple '), (' B ',' Ball '), (' C ',' Cat ')]]

Puede usar más de dos iterables al usar 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 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
Zipped = zip (list1, list2, list3)
Imprimir (Lista (con cremallera))

Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida como resultado:

[('A', 'Apple', '5'), ('B', 'Ball', '3')]

Creación de listas individuales desde un objeto de tipo postal

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

list1 = ["A", "B", "C"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
Zipped = zip (list1, list2, list3)
L1, L2, L3 = ZIP (*con cremallera)
Imprimir (Lista (L1), List (L2), List (L3))

Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida como resultado:

['A', 'B'] ['Apple', 'Ball'] ['5', '3']

En la muestra de código anterior, el objeto "zip" se desinfla usando el operador "*". Los resultados desinflados se alimentan 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 usaron listas de longitud desigual cuando se creó el objeto "zip" la primera vez.

Usar zip cuando desee mantener elementos de más tiempo iterable

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

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 que se detiene en el último elemento del tipo iterable más largo.

de ITerTools importar zip_longest
list1 = ["A", "B", "C"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
Zipped = Zip_Longest (List1, List2, List3)
Imprimir (Lista (con cremallera))

Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida como resultado:

[('' A ',' Apple ',' 5 '), (' B ',' Ball ',' 3 '), (' C ',' Cat ', Ninguno), (Ninguno,' Doll ', Ninguno) ]

Los valores faltantes están poblados como objetos de tipo "ninguno". También puede suministrar su propio valor para llenar pasando un argumento adicional de "FillValue" al método "ZIP_LONGEST".

de ITerTools importar zip_longest
list1 = ["A", "B", "C"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
Zipped = zip_longest (list1, list2, list3, fillvalue = "my_value")
Imprimir (Lista (con cremallera))

Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida como resultado:

[('' A ',' Apple ',' 5 '), (' B ',' Ball ',' 3 '), (' C ',' Cat ',' my_value '), (' my_value ',' muñeca ',' my_value ')]

Conclusión

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