Python 3
for f, b in zip(foo, bar):
print(f, b)
zipsi interrompe quando il più breve fooo si barferma.
In Python 3 , zip
restituisce un iteratore di tuple, come itertools.izipin Python2. Per ottenere un elenco di tuple, utilizzare list(zip(foo, bar)). E per comprimere fino a quando entrambi gli iteratori sono esauriti, dovresti usare
itertools.zip_longest .
Python 2
In Python 2 , zip
restituisce un elenco di tuple. Questo va bene quando fooe barnon sono enormi. Se sono entrambi massicci, la formazione zip(foo,bar)è una variabile temporanea inutilmente massiccia e deve essere sostituita da itertools.izipo
itertools.izip_longest, che restituisce un iteratore anziché un elenco.
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)
izipsi ferma quando uno fooo barè esaurito.
izip_longestsi ferma quando entrambi fooe barsono esauriti. Quando gli iteratori più corti sono esauriti, izip_longestproduce una tupla con Nonenella posizione corrispondente a quell'iteratore. È anche possibile impostare un diverso fillvalueoltre Nonese lo si desidera. Vedi qui per la storia completa .
Si noti inoltre che zipe il suo zipsimile brethen può accettare un numero arbitrario di iterabili come argomenti. Per esempio,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
stampe
1 red manchego
2 blue stilton
3 green brie
izipquello (anche se ilizip/zipsembra molto più pulito)?