Python 3
for f, b in zip(foo, bar):
print(f, b)
zipfooまたはの短いときにbar停止します。
でPythonの3、zip
のように、タプルのイテレータを返しitertools.izipPython2です。タプルのリストを取得するには、を使用しますlist(zip(foo, bar))。そして、両方のイテレーターが使い果たされるまで圧縮するには、itertools.zip_longestを使用し
ます。
Python 2
ではPythonの2、zip
タプルのリストを返します。これは時に問題ありfooとbar大規模ではありません。それらが両方とも大規模である場合、フォーミングzip(foo,bar)は不必要に大規模な一時変数であり、itertools.izipor
itertools.izip_longestではなく、リストの代わりにイテレータを返す必要があります。
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)
izipfooまたはいずれかbarがなくなると停止します。
izip_longest両方が停止するfooとbar使い果たされます。短い反復子が使い果たされると、その反復子に対応する位置にizip_longestタプルが生成Noneされます。必要に応じてfillvalue、他にも別のものを設定できNoneます。ここを参照してください完全な物語。
またzip、そのzipようなbrethenは任意の数のイテラブルを引数として受け入れることができることにも注意してください。例えば、
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
プリント
1 red manchego
2 blue stilton
3 green brie
izip(izip/の方zipがずっときれいに見えますが)なぜOPよりもOPの方が好きですか?