Boucle for simultanée sur plusieurs listes en python

Published: 17 décembre 2016

DMCA.com Protection Status

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