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...4719
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 a7 b1 c9 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 a7 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 a7 b1 None9 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 Hello7 b How1 c are9 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 Hello7 b How1 None are9 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 |
