W3docs

Les boucles for en Python

Apprenez comment fonctionnent les boucles for en Python : syntaxe, range(), enumerate(), break, continue, else, boucles imbriquées et itération sur des listes, string et dictionnaires.

Une boucle for en Python itère sur chaque élément d'une séquence — une liste, un tuple, un string, un dictionnaire, un ensemble ou tout autre itérable — et exécute un bloc de code une fois par élément. Contrairement aux langages où for compte généralement des nombres, le for de Python est une boucle for-each qui parcourt directement les éléments.

Ce chapitre couvre :

  • La syntaxe de base et le fonctionnement de la variable de boucle
  • La fonction range() pour les boucles comptées
  • break, continue et la clause else
  • enumerate() et zip() pour une itération plus riche
  • L'itération sur des string, des dictionnaires et des structures imbriquées
  • Les boucles for imbriquées
  • L'instruction pass comme espace réservé

Syntaxe de base

for variable in iterable:
    # block executed once per item

variable reçoit chaque élément successif de iterable. Le bloc indenté s'exécute une fois pour chaque élément.

Itérer sur une liste

python— editable, runs on the server

Résultat :

apple
banana
cherry

La boucle assigne "apple" à fruit, exécute print(fruit), puis passe à "banana", et ainsi de suite jusqu'à ce que tous les éléments soient épuisés.

Itérer sur un string

Un string est lui-même un itérable — chaque caractère est un élément :

for ch in "Python":
    print(ch)

Résultat :

P
y
t
h
o
n

La fonction range()

range() génère une séquence d'entiers à la demande. C'est la façon la plus courante d'exécuter une boucle un nombre précis de fois.

range(stop)
range(start, stop)
range(start, stop, step)
ParamètrePar défautSignification
start0Première valeur (incluse)
stoprequisBorne supérieure (exclue)
step1Incrément entre les valeurs

Compter de 1 à 5

python— editable, runs on the server

Résultat :

1
2
3
4
5

range(1, 6) produit 1, 2, 3, 4, 5 — la valeur d'arrêt 6 n'est pas incluse.

Compter par pas

for i in range(0, 10, 2):
    print(i)

Résultat :

0
2
4
6
8

Compter à rebours

Un pas négatif itère en sens inverse :

for i in range(10, 0, -2):
    print(i)

Résultat :

10
8
6
4
2

L'instruction break

break quitte immédiatement la boucle, avant que tous les éléments aient été parcourus.

for i in range(1, 6):
    if i == 3:
        break
    print(i)

Résultat :

1
2

Dès que i vaut 3, break se déclenche et la boucle s'arrête — 3, 4 et 5 ne sont jamais affichés.

Quand utiliser break : pour rechercher un élément dans une liste et s'arrêter dès qu'une correspondance est trouvée ; pour sortir tôt d'un long calcul.


L'instruction continue

continue ignore le reste de l'itération en cours et passe directement à l'élément suivant.

for i in range(1, 6):
    if i == 3:
        continue
    print(i)

Résultat :

1
2
4
5

Lorsque i vaut 3, continue ignore print(i) et saute à i = 4.


La clause else

La boucle for de Python prend en charge un bloc else optionnel qui s'exécute uniquement si la boucle s'est terminée normalement (c'est-à-dire qu'elle n'a pas été interrompue par break).

for i in range(1, 4):
    print(i)
else:
    print("Loop finished")

Résultat :

1
2
3
Loop finished

Si la boucle se termine via break, le bloc else est ignoré :

for i in range(1, 6):
    if i == 3:
        break
    print(i)
else:
    print("Loop finished without break")

Résultat :

1
2

La clause else est utile pour indiquer si une recherche a réussi — si vous faites un break sur une correspondance, le bloc else ne s'exécute que lorsqu'aucune correspondance n'a été trouvée.


enumerate() — boucle avec index et valeur

enumerate() associe chaque élément à son index de position, vous obtenez les deux en une seule boucle sans variable compteur séparée.

colors = ["red", "green", "blue"]
for index, color in enumerate(colors):
    print(index, color)

Résultat :

0 red
1 green
2 blue

Pour commencer à compter à partir d'un autre nombre, passez start :

fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits, start=1):
    print(i, fruit)

Résultat :

1 apple
2 banana
3 cherry

zip() — itérer sur deux séquences à la fois

zip() associe côte à côte les éléments de deux itérables (ou plus) :

names = ["Alice", "Bob", "Charlie"]
scores = [95, 87, 92]
for name, score in zip(names, scores):
    print(name, score)

Résultat :

Alice 95
Bob 87
Charlie 92

zip() s'arrête lorsque l'itérable le plus court est épuisé.


Itérer sur des dictionnaires

Itérer sur un dictionnaire produit par défaut ses clés :

person = {"name": "Alice", "age": 30, "city": "Paris"}
for key in person:
    print(key, ":", person[key])

Résultat :

name : Alice
age : 30
city : Paris

Utilisez .items() pour obtenir les paires clé-valeur ensemble :

for key, value in person.items():
    print(key, ":", value)

Résultat :

name : Alice
age : 30
city : Paris

Consultez également le chapitre Boucler sur les dictionnaires pour plus de modèles.


Boucles for imbriquées

Une boucle for peut être placée à l'intérieur d'une autre boucle for. La boucle intérieure s'exécute entièrement pour chaque itération de la boucle extérieure.

python— editable, runs on the server

Résultat :

red apple
red banana
red cherry
big apple
big banana
big cherry
tasty apple
tasty banana
tasty cherry

Attention : un break à l'intérieur d'une boucle imbriquée ne sort que de la boucle intérieure, pas des deux. Pour sortir des deux boucles à la fois, vous avez besoin d'une variable indicatrice ou de refactoriser en fonction avec return.


L'instruction pass

pass est un espace réservé sans opération. Utilisez-le lorsqu'une boucle for est syntaxiquement requise mais que vous n'avez rien à mettre dans le corps pour l'instant :

for i in range(3):
    pass  # TODO: implement later

Sans pass, Python lèverait une IndentationError car un bloc vide est une syntaxe invalide.


Les boucles for vs les compréhensions de liste

Un modèle courant consiste à construire une nouvelle liste à l'intérieur d'une boucle for :

squares = []
for x in range(1, 6):
    squares.append(x ** 2)
print(squares)

Résultat : [1, 4, 9, 16, 25]

Python propose une alternative plus concise appelée compréhension de liste :

squares = [x ** 2 for x in range(1, 6)]
print(squares)

Résultat : [1, 4, 9, 16, 25]

Les compréhensions de liste sont idiomatiques pour les transformations simples ; utilisez une boucle for classique lorsque le corps est complexe ou comporte des effets de bord.


Choisir entre for et while

SituationPréférer
Vous connaissez le nombre d'itérations ou avez un itérablefor
Vous bouclez jusqu'à ce qu'une condition changewhile
Vous avez besoin de l'index et de la valeurfor + enumerate()
Vous itérez sur deux listes simultanémentfor + zip()

Pratique

Pratique
Which built-in function generates a sequence of integers for use in a for loop?
Which built-in function generates a sequence of integers for use in a for loop?
Pratique
What does the else clause of a for loop do?
What does the else clause of a for loop do?
Pratique
What are the primary uses of for loops in Python?
What are the primary uses of for loops in Python?
Was this page helpful?