Python 3
for f, b in zip(foo, bar):
print(f, b)
zippara quando o mais curto fooou barpara.
No Python 3 , zip
retorna um iterador de tuplas, como itertools.izipno Python2. Para obter uma lista de tuplas, use list(zip(foo, bar)). E para compactar até que ambos os iteradores estejam esgotados, você usaria
itertools.zip_longest .
Python 2
No Python 2 , zip
retorna uma lista de tuplas. Isso é bom quando fooe barnão é maciço. Se ambos são maciços, a formação zip(foo,bar)é uma variável temporária desnecessariamente maciça e deve ser substituída por itertools.izipou
itertools.izip_longest, que retorna um iterador em vez de uma 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)
izippara quando um fooou barestá esgotado.
izip_longestpára quando ambos fooe barestão esgotados. Quando o (s) iterador (es) mais curto (s) estão esgotados, izip_longestproduz uma tupla Nonena posição correspondente a esse iterador. Você também pode definir uma diferente fillvaluealém de Nonese desejar. Veja aqui a história completa .
Observe também que zipe seus zipirmãos semelhantes podem aceitar um número arbitrário de iteráveis como argumentos. Por exemplo,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
impressões
1 red manchego
2 blue stilton
3 green brie
izip(mesmo que oizip/zippareça muito mais limpo)?