2012-04-09 10 views
32

Diciamo che ho due o più elenchi della stessa lunghezza. Qual è un buon modo per iterare attraverso di loro?Un modo migliore per scorrere su due o più elenchi contemporaneamente

a, b sono gli elenchi.

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

o

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

o c'è qualsiasi variante che mi manca?

Esistono vantaggi particolari dell'utilizzo di uno rispetto all'altro?

risposta

76

Il solito modo è quello di utilizzare zip():

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

Questo fermerà quando il più corto dei due iterables a e b è esaurita. Vale anche la pena notare: itertools.izip() (solo Python 2) e itertools.izip_longest() (itertools.zip_longest() in Python 3).

+4

mi ha battuto ad esso. Può valere la pena notare che 'zip' * di Python 3 è *' izip'. Inoltre, non esiste 'zip_longest' ma' map (None, a, b) 'può fare. – ephemient

+2

@ephemient: quest'ultimo solo su Python 2, ancora. Su Python 3, questo si fermerà nella sequenza più breve. E 'izip_longest()' è chiamato 'zip_longest()' su Python 3 ... –

7

È possibile utilizzare 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 
Problemi correlati