🐍 PyTutos

Enumerate et zip — les boucles en mode pro

Récupère l'index dans un for, et parcours plusieurs listes en parallèle.

⏱ 8 minutes 📂 intermediaire #intermediaire #boucles #enumerate #zip

enumerate et zip

Deux fonctions intégrées qui rendent les boucles for élégantes.

enumerate — avoir l'index ET la valeur

Avant (manuel, pas très propre) :

fruits = ["pomme", "kiwi", "banane"]
i = 0
for fruit in fruits:
    print(i, fruit)
    i = i + 1

Avec enumerate :

fruits = ["pomme", "kiwi", "banane"]
for i, fruit in enumerate(fruits):
    print(i, fruit)
# 0 pomme
# 1 kiwi
# 2 banane

Tu peux choisir le numéro de départ :

for i, fruit in enumerate(fruits, start=1):
    print(f"{i}. {fruit}")
# 1. pomme
# 2. kiwi
# 3. banane

zip — parcourir plusieurs listes en même temps

prenoms = ["Zazac", "Lea", "Tom"]
ages    = [10, 8, 12]

for prenom, age in zip(prenoms, ages):
    print(f"{prenom} a {age} ans")
# Zazac a 10 ans
# Lea a 8 ans
# Tom a 12 ans

Construire un dictionnaire avec zip

cles = ["nom", "age", "ville"]
valeurs = ["Zazac", 10, "Bordeaux"]

profil = dict(zip(cles, valeurs))
print(profil)
# {'nom': 'Zazac', 'age': 10, 'ville': 'Bordeaux'}

⚠ Tailles différentes

zip s'arrête à la liste la plus courte :

a = [1, 2, 3, 4]
b = ['x', 'y']
print(list(zip(a, b)))   # [(1, 'x'), (2, 'y')]

Pour aller jusqu'à la plus longue, utilise zip_longest :

from itertools import zip_longest
print(list(zip_longest(a, b, fillvalue='?')))
# [(1, 'x'), (2, 'y'), (3, '?'), (4, '?')]

Cas pratique : associer deux listes en CSV

noms = ["Zazac", "Lea", "Tom"]
notes = [16, 18, 12]

for nom, note in zip(noms, notes):
    print(f"{nom};{note}")

🧪 Quiz de validation

Réponds à toutes les questions. Il faut 70% de bonnes réponses pour valider le tuto !

🔒 Tu dois être connecté pour passer le quiz.