Comment passer en boucle plusieurs listes en Python
Ce tutoriel explique comment itérer à travers deux listes/tuples en même temps en Python. Nous utiliserons zip()
et itertools.zip_longest()
et nous expliquerons les différences entre elles et comment utiliser chacune d’elles. Nous verrons également comment le type de retour zip()
est différent en Python 2 et 3.
Fonction zip()
en Python 3.x
La fonction zip()
accepte plusieurs listes/tuples comme arguments et retourne un objet zip
, qui est un itérateur de tuples.
Utilisez zip()
pour itéré deux listes
Passez les deux listes à la fonction zip()
et utilisez pour la boucle pour itérer à travers l’itérateur de résultat.
listA = [1, 2, 3, 4]
listB = [10, 20, 30, 40]
for a, b in zip(listA, listB):
print(a, b)
Production:
1 10
2 20
3 30
4 40
Utilisez zip()
pour itéréer à travers deux listes de longueurs différentes
Si les listes ont des longueurs différentes, zip()
s’arrête lorsque la liste la plus courte se termine. Voir le code ci-dessous.
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in zip(listA, listB):
print(a, b)
Production:
1 10
2 20
3 30
4 40
Utilisez itertools.zip_longest()
pour itéré deux listes
Si vous avez besoin d’itérer à travers deux listes jusqu’à ce que la plus longue se termine, utilisez itertools.zip_longest()
. Elle fonctionne exactement comme la fonction zip()
, sauf qu’elle s’arrête lorsque la liste la plus longue se termine.
Elle remplit les valeurs vides avec None
, et retourne un itérateur de tuples.
import itertools
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in itertools.zip_longest(listA, listB):
print(a, b)
Production:
1 10
2 20
3 30
4 40
5 None
6 None
La valeur de remplissage par défaut est None
, mais vous pouvez définir fillvalue
à n’importe quelle valeur.
import itertools
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in itertools.zip_longest(listA, listB, fillvalue=0):
print(a, b)
Production:
1 10
2 20
3 30
4 40
5 0
6 0
Utilisez zip()
avec plusieurs listes
zip()
et ses fonctions de frères et soeurs peuvent accepter plus de deux listes.
import itertools
codes = [101, 102, 103]
students = ["James", "Noah", "Olivia"]
grades = [65, 75, 80]
for a, b, c in itertools.zip_longest(codes, students, grades, fillvalue=0):
print(a, b, c)
Production:
101 James 65
102 Noah 75
103 Olivia 80
Fonction zip()
en Python 2.x
La fonction zip()
en Python 2.x accepte également plusieurs listes/tuples comme arguments mais retourne une liste de tuples. Cela fonctionne bien pour les petites listes, mais si vous avez de grandes listes, vous devriez utiliser itertools.izip()
à la place, car elle retourne un itérateur de tuples.
Utilisez itertools.izip()
pour itérer deux listes
import itertools
listA = [1, 2, 3, 4]
listB = [10, 20, 30, 40]
for a, b in itertools.izip(listA, listB):
print(a, b)
Production:
1 10
2 20
3 30
4 40
Article connexe - Python List
- Convertir un dictionnaire en liste en Python
- Supprimer toutes les occurrences d'un élément d'une liste en Python
- Supprimer les doublons de la liste en Python
- Comment obtenir la moyenne d'une liste en Python
- Quelle est la différence entre les méthodes de liste append et extend
- Comment convertir une liste en chaîne de caractères en Python