Python 3
for f, b in zip(foo, bar):
print(f, b)
zipse detiene cuando el más corto fooo se bardetiene.
En Python 3 , zip
devuelve un iterador de tuplas, como itertools.izipen Python2. Para obtener una lista de tuplas, use list(zip(foo, bar)). Y para comprimir hasta que se agoten ambos iteradores, usaría
itertools.zip_longest .
Python 2
En Python 2 , zip
devuelve una lista de tuplas. Esto está bien cuando fooy barno son masivos. Si ambos son masivos, la formación zip(foo,bar)es una variable temporal innecesariamente masiva y debe reemplazarse por itertools.izipo
itertools.izip_longest, que devuelve un iterador en lugar de una lista.
import itertools
for f,b in itertools.izip(foo,bar):
print(f,b)
for f,b in itertools.izip_longest(foo,bar):
print(f,b)
izipse detiene cuando fooo barestá agotado.
izip_longestse detiene cuando ambos fooy barestán agotados. Cuando los iteradores más cortos están agotados, izip_longestproduce una tupla Noneen la posición correspondiente a ese iterador. También puede establecer una diferente fillvalueademás Nonesi lo desea. Vea aquí la historia completa .
Tenga en cuenta también que zipy su zipbreen-like puede aceptar un número arbitrario de iterables como argumentos. Por ejemplo,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
huellas dactilares
1 red manchego
2 blue stilton
3 green brie
izip(aunque elizip/ sezipve mucho más limpio)?zipyzip-como funciones deitertoolsaceptar cualquier número de iterables y no sólo 2? Esta pregunta es canónica ahora y su respuesta es la única que vale la pena actualizar.i? ¿Puedo envolver ese zip en enumerate?for i, (f, b) in enumerate(zip(foo, bar)).Tú quieres la
zipfunción.fuente
itertools.izipsi tiene una gran cantidad de elementos.Debe usar la función ' zip '. Aquí hay un ejemplo de cómo puede verse su propia función zip
fuente
zip(seq1, seq2)?Puede agrupar los enésimos elementos en una tupla o lista usando la comprensión, luego pasarlos con una función generadora.
fuente
En caso de que alguien esté buscando algo como esto, lo encontré muy simple y fácil:
Las listas se iterarán con su contenido completo, a diferencia de zip (), que solo itera hasta la longitud mínima de contenido.
fuente
Aquí se explica cómo hacerlo con la comprensión de la lista:
huellas dactilares:
fuente