Python 3
for f, b in zip(foo, bar):
print(f, b)
zips'arrête lorsque le plus court de fooou bars'arrête.
En Python 3 , zip
retourne un itérateur de tuples, comme itertools.izipen 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 fooet ce barn'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.izipou
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)
izips'arrête lorsque l'un fooou l' autre barest épuisé.
izip_longests'arrête lorsque les deux fooet barsont épuisés. Lorsque le ou les itérateurs les plus courts sont épuisés, izip_longestdonne un tuple avec Nonela position correspondant à cet itérateur. Vous pouvez également définir un autre en fillvalueplus Nonesi vous le souhaitez. Voir ici pour l' histoire complète .
Notez également que zipet ses zipfrè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
izipcelle (même si laizip/zipsemble beaucoup plus propre)?