2013-05-01 19 views
19

Come si elencano due elenchi di uguale lunghezza contemporaneamente? Sono sicuro che ci deve essere un modo più divinatorio di fare quanto segue:Enumerare contemporaneamente due elenchi Python?

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

voglio utilizzare l'indice e data1 [index] e dati2 [index] all'interno del ciclo for.

risposta

44

Uso zip:

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

Nota che zip corre solo fino alla più breve delle due liste (non un problema per le liste di uguale lunghezza), ma, in caso di liste di lunghezza diseguale, se si vuole procedere tutta la lista quindi usa itertools.izip_longest.

+0

grazie questo ha risolto 'zip (data1, data2) .index (val1, val2)' – Chebhou

0

Si supponga di voler utilizzare zip:

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

L'indice è necessario all'interno dello op anche. –

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

In Python 2.x, si potrebbe desiderare di utilizzare itertools.izip invece di zip, esp. per liste molto lunghe

+9

Qualcun altro odia che "enumerare" sia lungo nove caratteri? –

+0

@StevenRumbalski: ora che lo menzioni, potrebbe essere stato chiamato 'enum' per essere coerente con' len' e 'str'. –

+0

@larsmans tranne che mescolerebbe le persone con 'enum's – jamylak

0

Althought questo non è molto chiaro quello che cercate,

>>> 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

Poiché è stato detto che la lunghezza sono uguali,

for l in range(0, len(a)): 
    print a[l], b[l] 
Problemi correlati