Python débutant : maîtriser range(), enumerate() et zip()
Apprenez range(), enumerate() et zip() en Python avec des boucles simples, des exemples utiles et les erreurs fréquentes à éviter.

- Difficulté
- Facile
Quand on débute en Python, on écrit très vite des boucles for. C’est souvent à ce moment-là que range(), enumerate() et zip() apparaissent.
Ces तीन outils reviennent partout dans les exercices simples : compter, afficher une liste numérotée, ou parcourir deux listes en même temps. Ce tutoriel vous montre comment les utiliser dans des boucles courtes et concrètes, sans jargon inutile.
Prérequis
Vous avez seulement besoin de connaître la boucle for, les variables et les listes Python. Un éditeur de texte ou l’interpréteur Python suffit pour tester chaque exemple.
Matériel nécessaire
- Python installé sur votre ordinateur
- Un terminal, IDLE ou un éditeur de code
- Quelques listes simples pour faire les essais
Étapes
Lancer une première boucle avec range()
Commencez par afficher plusieurs lignes avec une boucle très simple. Tapez ce code puis exécutez-le :
for i in range(5): print(i)Python affiche alors les nombres de
0à4. Vous obtenez bien 5 passages dans la boucle, mais le comptage commence à zéro.Changer le point de départ avec range()
Faites maintenant une boucle qui commence ailleurs que zéro. Essayez :
for i in range(1, 6): print(i)Cette fois, l’affichage va de
1à5. C’est pratique pour numéroter des éléments ou répéter une action avec un compteur lisible.Ajouter un pas dans range()
Testez ensuite un parcours qui saute des valeurs. Par exemple :
for i in range(0, 10, 2): print(i)Vous verrez s’afficher
0,2,4,6et8. Le troisième argument correspond au pas.Vous pouvez aussi compter à rebours avec un pas négatif :
for i in range(5, 0, -1): print(i)Répéter une action utile avec range()
Utilisez maintenant
range()dans un cas concret. Voici un mini-exemple pour afficher une table de multiplication :nombre = 3 for i in range(1, 11): print(nombre, "x", i, "=", nombre * i)Vous pouvez aussi vous en servir pour répéter une consigne, créer plusieurs lignes, ou lancer plusieurs tests identiques. Quand vous avez besoin d’un compteur,
range()est souvent le bon point de départ.Numéroter une liste avec enumerate()

Prenez maintenant une liste de courses ou de prénoms. Essayez ce code :
fruits = ["pomme", "banane", "orange"] for index, fruit in enumerate(fruits): print(index, fruit)Python affiche ici l’index puis la valeur associée. Vous obtenez par exemple
0 pomme, puis1 banane, puis2 orange.Démarrer la numérotation autrement avec enumerate()
Quand vous préparez un affichage pour un humain, commencer à zéro n’est pas toujours idéal. Testez alors :
fruits = ["pomme", "banane", "orange"] for numero, fruit in enumerate(fruits, start=1): print(numero, fruit)Vous obtiendrez une liste numérotée de
1à3. C’est plus agréable pour un menu, un classement ou une liste d’options.Remplacer un accès manuel par enumerate()
Comparez maintenant deux façons de parcourir une liste. La première utilise les index manuellement :
fruits = ["pomme", "banane", "orange"] for i in range(len(fruits)): print(i, fruits[i])La seconde fait la même chose de manière plus directe :
for i, fruit in enumerate(fruits): print(i, fruit)Les deux versions peuvent fonctionner, mais
enumerate()est souvent plus lisible pour un débutant. Vous exprimez tout de suite l’idée : “je veux l’index et la valeur”.Parcourir deux listes en parallèle avec zip()

Passez maintenant au cas où deux listes vont ensemble. Testez cet exemple :
noms = ["Lina", "Tom", "Sara"] notes = [12, 15, 18] for nom, note in zip(noms, notes): print(nom, note)La boucle associe chaque nom à la note placée à la même position. Vous parcourez donc les deux listes en parallèle, sans gérer les index vous-même.
Afficher des paires utiles avec zip()
Essayez un autre exemple simple avec des produits et des prix. Écrivez :
produits = ["pain", "lait", "œufs"] prix = [1.2, 0.9, 2.5] for produit, tarif in zip(produits, prix): print(produit, ":", tarif, "€")Ce type de boucle est utile pour créer un affichage lisible rapidement. Vous pouvez l’utiliser pour des libellés, des scores, des couples question-réponse ou des noms-fichiers.
Vérifier la longueur des listes avant zip()

Faites maintenant un test avec deux listes de tailles différentes :
noms = ["Lina", "Tom", "Sara"] notes = [12, 15] for nom, note in zip(noms, notes): print(nom, note)Vous remarquerez que la boucle s’arrête dès que la liste la plus courte est épuisée. Ici,
Saran’est pas affichée avec une note, car il n’existe pas de troisième valeur correspondante dansnotes.Combiner enumerate() et zip() dans une boucle lisible
Terminez par une boucle un peu plus riche, mais toujours facile à lire. Essayez :
noms = ["Lina", "Tom", "Sara"] notes = [12, 15, 18] for rang, (nom, note) in enumerate(zip(noms, notes), start=1): print(rang, "-", nom, ":", note)Cette boucle numérote chaque paire formée par
zip(). Vous obtenez un affichage du type1 - Lina : 12, puis2 - Tom : 15, puis3 - Sara : 18.Vous utilisez alors chaque outil pour son rôle :
zip()assemble,enumerate()numérote, et la boucleforaffiche. C’est une base très utile pour écrire des parcours propres en Python.
Erreurs fréquentes & dépannage
L’erreur la plus fréquente avec range() consiste à croire que la borne de fin est incluse. Si vous voulez afficher jusqu’à 10, il faut souvent écrire range(1, 11).
Avec enumerate(), beaucoup de débutants oublient qu’on récupère deux informations. Il faut donc prévoir deux variables, par exemple index et valeur.
Avec zip(), le piège classique est d’oublier que la boucle s’arrête à la liste la plus courte. Si une donnée manque dans une des listes, une partie des éléments ne sera pas parcourue.
Astuces & pour aller plus loin
Pour choisir vite le bon outil, posez-vous une seule question avant la boucle. Ai-je besoin d’un compteur numérique, d’un index avec une valeur, ou de plusieurs listes en parallèle ?
Si vous voulez compter, utilisez range(). Si vous voulez numéroter une liste, utilisez enumerate(). Si vous voulez lier plusieurs séquences élément par élément, utilisez zip().
Testez chaque exemple en modifiant seulement une petite partie du code. Changer une borne, un start ou une longueur de liste aide beaucoup à comprendre le comportement réel de la boucle.
Questions fréquentes
À quoi sert range() en Python ?
range() sert à produire une suite de nombres pour une boucle for. On l’utilise souvent pour répéter une action un certain nombre de fois ou pour compter avec un début, une fin et parfois un pas.
Pourquoi enumerate() est-il pratique pour débuter ?
enumerate() est pratique car il donne directement l’index et la valeur dans une même boucle. On évite ainsi de manipuler les positions manuellement avec range(len(...)).
Que fait zip() avec deux listes ?
zip() parcourt deux listes en parallèle en associant les éléments de même position. Dans une boucle, cela permet de récupérer facilement des paires comme un nom et une note.
Que se passe-t-il si les listes n’ont pas la même taille avec zip() ?
La boucle s’arrête quand la liste la plus courte n’a plus d’éléments. Les valeurs restantes de la liste la plus longue ne sont donc pas parcourues.
Peut-on utiliser enumerate() et zip() ensemble ?
Oui, c’est même très utile pour numéroter des paires d’éléments. Par exemple, vous pouvez afficher un rang, un nom et une note dans une seule boucle.
Conclusion
Vous avez maintenant trois outils simples mais très utiles pour vos boucles Python. range() sert à compter, enumerate() sert à numéroter, et zip() sert à parcourir plusieurs listes ensemble.
Le plus important est de choisir l’outil qui correspond directement à votre intention. En pratiquant sur de petits exemples, vous rendrez vos boucles plus courtes, plus claires et plus faciles à corriger.