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