Aller au contenu principal

📊 Graphiques, 📩collections (set, tuple, dict)

Boucle for sur une liste

À la rencontre 5, on a parcouru des listes avec for i in range(len(liste)) et liste[i] pour accĂ©der Ă  l'Ă©lĂ©ment Ă  l'index i.
Il existe une façon plus directe et plus lisible : parcourir les éléments directement, sans passer par l'index.

La syntaxe est la suivante :

for element in liste:
# instructions à exécuter

Voici un exemple avec une liste d'éléments chimiques :

elements = ["HydrogĂšne", "OxygĂšne", "Carbone", "Azote"]
for element in elements:
print("ÉlĂ©ment :", element)
ÉlĂ©ment : HydrogĂšne
ÉlĂ©ment : OxygĂšne
ÉlĂ©ment : Carbone
ÉlĂ©ment : Azote

À chaque tour de boucle, la variable element prend automatiquement la valeur de l'Ă©lĂ©ment suivant dans la liste.
Son nom est libre : on aurait pu l'appeler e, chimique, ou n'importe quoi d'autre. C'est nous qui choisissons.

👉 ExĂ©cutez ce code en mode dĂ©bogage. Mettez un point d'arrĂȘt sur la ligne 2 et avancez une ligne Ă  la fois pour suivre l'Ă©volution de la variable element.


Équivalence avec une boucle for et range(len()) : ce qu'on connaissait dĂ©jĂ 

Les deux versions ci-dessous produisent exactement le mĂȘme rĂ©sultat :

Boucle for sur la liste​

elements = ["HydrogĂšne", "OxygĂšne", "Carbone", "Azote"]
for element in elements:
print("ÉlĂ©ment :", element)

Boucle for avec range(len())​

elements = ["HydrogĂšne", "OxygĂšne", "Carbone", "Azote"]
for i in range(len(elements)):
print("ÉlĂ©ment :", elements[i])

La version for element in elements est plus concise et plus facile Ă  lire, surtout quand on n'a pas besoin de l'index.


Quand utiliser quelle boucle?
  • for element in elements : quand on veut traiter chaque Ă©lĂ©ment et qu'on n'a pas besoin de l'index.
  • for i in range(len(elements)) : quand on a besoin de l'index pour modifier la liste ou comparer des positions.
  • while : quand la condition d'arrĂȘt est plus complexe qu'un simple parcours de liste.

Limitation : parcourir deux listes en parallĂšle

La syntaxe for element in elements est pratique, mais elle ne permet pas de parcourir deux listes en parallĂšle, puisqu'on n'a pas accĂšs Ă  l'index.
Dans ce cas, il faut revenir Ă  for i in range(len(...)) :

elements = ["HydrogĂšne", "OxygĂšne", "Carbone", "Azote"]
masses_atomiques = [1.008, 15.999, 12.011, 14.007]

# ❌ Impossible avec for element in elements : pas d'accùs à l'index
for element in elements:
print(f"{element} a une masse atomique de {masses_atomiques[???]}") # On ne connaĂźt pas l'index!

# ✅ Utiliser range() pour accĂ©der aux deux listes via l'index
for i in range(len(elements)):
print(f"{elements[i]} a une masse atomique de {masses_atomiques[i]}")
HydrogĂšne a une masse atomique de 1.008
OxygĂšne a une masse atomique de 15.999
Carbone a une masse atomique de 12.011
Azote a une masse atomique de 14.007

Construire une nouvelle liste avec append()

Une boucle for sur une liste est souvent utilisée pour construire une nouvelle liste à partir d'une liste existante.
Voici un exemple qui crée une liste de descriptions à partir de la liste d'éléments chimiques :

elements = ["HydrogĂšne", "OxygĂšne", "Carbone", "Azote"]
descriptions = []
for element in elements:
descriptions.append(f"{element} est un élément chimique.") # Ajoute une description à la liste
print(descriptions)
['HydrogÚne est un élément chimique.', 'OxygÚne est un élément chimique.', 'Carbone est un élément chimique.', 'Azote est un élément chimique.']

👉 ExĂ©cutez-le en mode dĂ©bogage pour suivre l'Ă©volution de la liste descriptions Ă  chaque itĂ©ration.


Bonus : enumerate() pour obtenir l'index et la valeur en mĂȘme temps

Parfois, on a besoin à la fois de l'index et de la valeur de chaque élément.
La fonction enumerate() permet d'obtenir les deux sans avoir à gérer i manuellement :

elements = ["HydrogĂšne", "OxygĂšne", "Carbone", "Azote"]
for index, element in enumerate(elements):
print(f"ÉlĂ©ment #{index} : {element}")
ÉlĂ©ment #0 : HydrogĂšne
ÉlĂ©ment #1 : OxygĂšne
ÉlĂ©ment #2 : Carbone
ÉlĂ©ment #3 : Azote

👉 ExĂ©cutez-le en mode dĂ©bogage pour suivre l'Ă©volution des variables index et element Ă  chaque itĂ©ration.

Les explications de cette section étaient-elles claires ?