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)?