zip(*iterables)
La función zip devuelve un iterador de tuplas, en el que la tupla i-ésima está formada por los elementos que ocupan dicha posición en los iteradores cedidos como argumentos. El iterador para cuando se han procesado todos los elementos del iterador más corto.
Si no se incluyen argumentos, la función devuelve un iterador vacío. Si se añade como argumento un único iterador, se devuelve un iterador de tuplas de un elemento.
Se garantiza el orden de los iteradores en el resultado.
La función zip usada en conjunto con el operador * puede ser usada para extraer los iteradores originales a partir del iterador devuelto por zip (véase ejemplo más adelante).
- iterables : iteradores a combinar.
La función zip devuelve un iterador.
Usada sin argumentos, la función zip devuelve un iterador vacío:
i = zip()
print(type(i))
print(i)
Si el argumento es una única lista, la función devuelve un iterador formado por tuplas de un elemento:
i = zip([1, 2, 3])
list(i)
Usada con dos iteradores como argumentos, devuelve un iterador formado por tuplas de uno y otro iterador de entrada:
num = [1, 2, 3]
es = ["uno", "dos", "tres"]
i = zip(num, es)
list(i)
Pueden usarse más de dos iteradores como argumentos:
num = [1, 2, 3]
es = ["uno", "dos", "tres"]
en = ["one", "two", "three"]
i = zip(num, es, en)
list(i)
Es posible recuperar los iteradores originales con formato de tuplas usando zip(*iterador):
num = [1, 2, 3]
es = ["uno", "dos", "tres"]
en = ["one", "two", "three"]
i = zip(num, es, en)
n1, n2, n3 = zip(*i)
print(n1, n2, n3)
Si los iteradores de entrada tienen diferente longitud, la función se para cuando se han procesado los elementos del iterador de entrada más corto:
num = [1, 2, 3]
es = ["uno", "dos", "tres", "cuatro", "cinco"]
en = ["one", "two", "three", "four"]
i = zip(num, es, en)
list(i)