0

重複の可能性:
2つのリストを反復処理する方法-python

2つのアイテムを同時に繰り返したいのですが、私の頭の中では次のようになっています。

for elem1 in list 1 and for elem2 in list2:
    do something to elem1; do something to elem2

ただし、この構文は受け入れられません。明確にするために、ネストされたforループについては話していません。これは、最初のリストのすべての要素について、リスト全体を反復処理するためです。2つのリスト(または何でも)を同時に繰り返したいと思います。これを行うためのPythonの方法はありますか?

4

1 に答える 1

11

使用zip()

for elem1, elem2 in zip(list1, list2):

これらのリストの1つが他のリストよりも長い場合、短いリストの長さを超える要素は表示されません。

Python 2では、zip()両方のリストのコピーが一緒に圧縮され、大きなリストの場合はメモリの負担になる可能性があります。itertools.izip()このような大きなリストに使用すると、代わりにイテレータが返されます。Python 3では、zip()それ自体がすでにイテレータを返します。

代わりに最長のリストをループする必要がある場合(および欠落している短いリスト要素のフィラー値を入力する必要がある場合)、itertools.izip_longest()代わりに次を使用します。

from itertools import izip_longest

for elem1, elem2 in izip_longest(list1, list2):
于 2013-01-08T07:15:47.797 に答える