Comment passer en boucle plusieurs listes en Python

mo abdelazim 30 janvier 2023
  1. Fonction zip() en Python 3.x
  2. Fonction zip() en Python 2.x
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