2013-05-01 16 views
19

Wie liste ich zwei Listen gleicher Länge gleichzeitig auf? Ich bin sicher, es muss eine pythonic Weg sein, um die folgenden Funktionen ausführen:Zählen Sie zwei Python-Listen gleichzeitig auf?

for index, value1 in enumerate(data1): 
    print index, value1 + data2[index] 

ich den Index und data1 [index] und Daten2 [index] innerhalb der for-Schleife verwenden möchten.

Antwort

44

Verwendung zip:

for index, (value1, value2) in enumerate(zip(data1, data2)): 
    print index, value1 + value2 

Beachten Sie, dass zip läuft nur bis zu den kürzeren der beiden Listen (kein Problem für gleich lange Listen), aber im Falle von ungleich langen Listen, wenn Sie verfahren möchten Ganze Liste verwenden Sie dann itertools.izip_longest.

+0

Dank Dies löste 'zip (data1, data2) .index (val1, val2)' – Chebhou

0

Angenommen, Sie möchten zip verwenden:

>>> for x in zip([1,2], [3,4]): 
    ...  print x 
    ... 
    (1, 3) 
    (2, 4) 
+2

Der Index ist in der lo benötigt Op auch. –

8
for i, (x, y) in enumerate(zip(data1, data2)): 

In Python 2.x, könnten Sie itertools.izip statt zip, esp verwenden möchten. für sehr lange Listen.

+9

Hasst jemand anderes, dass "enumerate" neun Zeichen lang ist? –

+0

@StevenRumbalski: jetzt, wo du es erwähnst, könnte es "enum" genannt werden, um mit "len" und "str" ​​konsistent zu sein. –

+0

@larsmans außer dass würde Menschen mischen mit 'enum's – jamylak

0

Althought das ist nicht ganz klar, was Sie suchen,

>>> data1 = [3,4,5,7] 
>>> data2 = [4,6,8,9] 
>>> for index, value in enumerate(zip(data1, data2)): 
    print index, value[0]+value[1] 


0 7 
1 10 
2 13 
3 16 
1

Da es erwähnt wurde, dass die Länge gleich sind,

for l in range(0, len(a)): 
    print a[l], b[l] 
Verwandte Themen