Python 3
for f, b in zip(foo, bar):
print(f, b)
zip
s'arrête lorsque le plus court de foo
ou bar
s'arrête.
En Python 3 , zip
retourne un itérateur de tuples, comme itertools.izip
en Python2. Pour obtenir une liste de tuples, utilisez list(zip(foo, bar))
. Et pour compresser jusqu'à épuisement des deux itérateurs, vous utiliserez
itertools.zip_longest .
Python 2
En Python 2 , zip
retourne une liste de tuples. C'est bien quand foo
et ce bar
n'est pas massif. S'ils sont tous les deux massifs, la formation zip(foo,bar)
est une variable temporaire inutilement massive et doit être remplacée par itertools.izip
ou
itertools.izip_longest
, qui renvoie un itérateur au lieu d'une liste.
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)
izip
s'arrête lorsque l'un foo
ou l' autre bar
est épuisé.
izip_longest
s'arrête lorsque les deux foo
et bar
sont épuisés. Lorsque le ou les itérateurs les plus courts sont épuisés, izip_longest
donne un tuple avec None
la position correspondant à cet itérateur. Vous pouvez également définir un autre en fillvalue
plus None
si vous le souhaitez. Voir ici pour l' histoire complète .
Notez également que zip
et ses zip
frères semblables peuvent accepter un nombre arbitraire d'itérables comme arguments. Par exemple,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
impressions
1 red manchego
2 blue stilton
3 green brie
izip
celle (même si laizip
/zip
semble beaucoup plus propre)?