2012-05-02 16 views
6

¿Existe alguna manera inteligente de iterar sobre dos listas en Python (sin usar lista de comprensión)?iteración de varias listas de Python

quiero decir, algo como esto:

# (a, b) is the cartesian product between the two lists' elements 
for a, b in list1, list2: 
    foo(a, b) 

en lugar de:

for a in list1: 
    for b in list2: 
     foo(a, b) 

Respuesta

13

itertools.product() hace exactamente esto:

for a, b in itertools.product(list1, list2): 
    foo(a, b) 

Puede manejar un número arbitrario de iterables, y en ese sentido es más general que los bucles anidados for.