2012-04-09 17 views
32

同じ長さのリストが2つ以上あるとします。それらを反復処理するには良い方法はありますか?複数のリストを一度に繰り返し処理する方が良い

abがリストです。

for i, ele in enumerate(a): 
    print ele, b[i] 

または

for i in range(len(a)): 
    print a[i], b[i] 

か私が行方不明です任意の変種はありますか?

他のものを重ねて使用することに特別な利点はありますか?

答えて

76

通常の方法はzip()を使用することです:

for x, y in zip(a, b): 
    # x is from a, y is from b 

2つのイテラブルaの短縮とbが消耗しているとき、これが停止します。また注目すべき点は、itertools.izip()(Python 2のみ)とitertools.izip_longest()(Python 3ではitertools.zip_longest())です。

+4

はそれを私にビート。 Python 3の 'zip' *が*' izip'であることは注目に値するかもしれません。また、 'zip_longest'はありませんが、' map(None、a、b) 'はできます。 – ephemient

+2

@ephemient:後者はPython 2でしかありません。 Python 3では、これは最短のシーケンスで停止します。そして 'izip_longest()'はPython 3で 'zip_longest()'と呼ばれています... –

7

あなたはzipを使用することができます。

>>> a = [1, 2, 3] 
>>> b = ['a', 'b', 'c'] 
>>> for x, y in zip(a, b): 
... print x, y 
... 
1 a 
2 b 
3 c 
関連する問題