Python 3
for f, b in zip(foo, bar):
print(f, b)
zipzatrzymuje się, gdy krótszy foolub barzatrzymuje się.
W Pythonie 3 , zip
zwraca iterator krotek, jak itertools.izipw python2. Aby uzyskać listę krotek, użyj list(zip(foo, bar)). Aby skompresować plik do wyczerpania obu iteratorów, należy użyć
itertools.zip_longest .
Python 2
W Pythonie 2 , zip
zwraca listę krotek. To dobrze, kiedy fooi barnie są ogromne. Jeśli oba są masywne, wówczas formowanie zip(foo,bar)jest niepotrzebnie masywną zmienną tymczasową i powinno zostać zastąpione przez itertools.iziplub
itertools.izip_longest, która zwraca iterator zamiast listy.
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)
izipzatrzymuje się, gdy jeden foolub barjest wyczerpany.
izip_longestzatrzymuje się, gdy oba fooi barsą wyczerpane. Kiedy krótsze iteratory są wyczerpane, izip_longestdaje krotkę Nonew pozycji odpowiadającej temu iteratorowi. Można również ustawić inny fillvalueoprócz Nonejeśli chcesz. Zobacz tutaj pełną historię .
Zauważ też, że zipi zippodobnie do niego, może przyjmować dowolną liczbę iterowalnych argumentów. Na przykład,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
odciski
1 red manchego
2 blue stilton
3 green brie
izip(nawet jeśliizip/zipwygląda na znacznie czystszą)?