Python 3
for f, b in zip(foo, bar):
print(f, b)
zip
foo
またはの短いときにbar
停止します。
でPythonの3、zip
のように、タプルのイテレータを返しitertools.izip
Python2です。タプルのリストを取得するには、を使用しますlist(zip(foo, bar))
。そして、両方のイテレーターが使い果たされるまで圧縮するには、itertools.zip_longestを使用し
ます。
Python 2
ではPythonの2、zip
タプルのリストを返します。これは時に問題ありfoo
とbar
大規模ではありません。それらが両方とも大規模である場合、フォーミングzip(foo,bar)
は不必要に大規模な一時変数であり、itertools.izip
or
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)
izip
foo
またはいずれか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の方が好きですか?