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.