Avec python il est possible d'avoir une boucle for simultanée sur plusieurs listes.
Boucle sur 1 liste
Rappelons que dans le cas d'une liste pour itérer sur celle-ci, il suffit de procéder comme ceci:
>>> l1 = [4,7,1,9]
>>> for i in l1:
... print i
...
4
7
1
9
Boucle sur 2 listes
Si on veut itérer sur deux listes de même taille on peut utiliser la fonction build-in de python zip
>>> l1 = [4,7,1,9]
>>> l2 = ['a','b','c','d']
>>> for i,j in zip(l1,l2):
... print i,j
...
4 a
7 b
1 c
9 d
Par contre dans le cas de 2 listes de tailles différentes, avec la fonction zip le nombres d'itérations est égale à la taille la plus petite, illustration
>>> l1 = [4,7,1,9]
>>> l2 = ['a','b']
>>> for i,j in zip(l1,l2):
... print i,j
...
4 a
7 b
Pour continuer l'itération dans le cas de 2 listes de tailles différentes, on peut utiliser la fonction Map, Filter and Reduce
>>> l1 = [4,7,1,9]
>>> l2 = ['a','b']
>>> for i,j in map(None,l1,l2):
... print i,j
...
4 a
7 b
1 None
9 None
Dans ce cas les "données manquantes" sont remplacées par None.
Boucle sur 3 listes ou plus
Pour une boucle sur 3 listes ou plus, on peut toujours utiliser la fonction map:
>>> l1 = [4,7,1,9]
>>> l2 = ['a','b','c','d']
>>> l3 = ['Hello','How','are','you']
>>> for i,j,k in map(None,l1,l2,l3):
... print i,j,k
...
4 a Hello
7 b How
1 c are
9 d you
Exemple avec des tailles différentes:
>>> l1 = [4,7,1,9]
>>> l2 = ['a','b']
>>> l3 = ['Hello','How','are','you']
>>> for i,j,k in map(None,l1,l2,l3):
... print i,j,k
...
4 a Hello
7 b How
1 None are
9 None you
Recherches associées
Liens | Site |
---|---|
LOOPING THROUGH MULTIPLE LISTS (PYTHON RECIPE) | code.activestate.com |
Looping Through Multiple Lists | safaribooksonline.com |
zip | python doc |
Map, Filter and Reduce | python doc |
Python iterate over two lists simultaneously | stackoverflow |
Is there a better way to iterate over two lists, getting one element from each list for each iteration? | stackoverflow |
How can I iterate through two lists in parallel in Python? | stackoverflow |