🔔

Webinar de présentation de nos formations le mercredi 1 février

Je m'inscris à l'événement

Comment faire une boucle FOR avec Python ?

En Python, la boucle FOR est une structure qui permet la répétition d'instructions. Imagine que tu veuilles appliquer la même instruction à 100 éléments différents : sans la boucle FOR, il faudrait écrire 100 fois cette même instruction ! Dans cet article, tu vas comprendre comment la boucle FOR te fait gagner du temps dans la rédaction de ton code.

Sommaire

La logique d’une boucle FOR

Le langage Python est le langage de programmation le plus populaire, en partie car il est simple et épuré. La boucle FOR illustre bien cette notion d’épuration du langage.

L’idée derrière la boucle FOR, c’est de t’éviter d’écrire plusieurs fois les mêmes instructions, dès que c’est possible. En effet, il arrive souvent qu’en codant, tu veuilles appliquer la même instruction à tous les éléments d’une séquence. 

Par séquence, il faut comprendre : soit une liste, soit un dictionnaire Python, soit une chaîne de caractères (un mot). On les appelle des “objets itérables”, parce qu’on peut sélectionner chacun de leurs éléments un par un.

La boucle FOR te permet d’écrire ton instruction une seule fois et de préciser à quelle séquence tu veux appliquer cette instruction. Python va alors l’exécuter autant de fois que nécessaire, c’est-à-dire autant de fois qu’il y a d’item dans la séquence. C’est pour ça qu’on l’appelle une boucle. Lorsqu’elle a été appliquée à tous les éléments de la séquence, la boucle s’arrête.

Pour mieux comprendre

Voici une analogie très concrète pour que tu sois sûr de comprendre. Si tu as 100 documents à photocopier, ton cerveau va certainement se mettre en mode “boucle FOR”. Tu connais les gestes à faire pour photocopier un document : ouvrir le capot, poser la feuille, appuyer sur le bouton vert, rouvrir le capot et retirer la feuille. Tu connais donc l’instruction “photocopier un document”. Alors, tu vas appliquer cette même instruction à toute ta pile de documents. Ainsi, tu effectues une boucle FOR :

“Pour chaque document,

Je photocopie le document.”

Cette boucle s’arrête lorsque tu as photocopié les 100 documents : c’est-à-dire, lorsque tu as parcouru toute la séquence.

Remarque : certaines photocopieuses acceptent une pile de pages à photocopier. Dans ce cas, c’est la machine qui fait une boucle en imprimant une “séquence de pages”. En fin de compte, tu gagnes du temps !

Fonctionnement d'une boucle For

Quittons le monde des photocopies pour revenir à la programmation ! 

La syntaxe d’une boucle FOR en Python

Effectuer une boucle FOR sur une chaîne de caractères

Une chaîne de caractères est un objet Python de type “string”. On peut sélectionner chaque caractère isolément, ce qui signifie qu’une chaîne de caractères est un objet itérable.

La lettre i est une variable qui représente chaque item de la séquence. Dans ce cas, un item correspond à une lettre du mot.

for i in “DataBird” :
  print(i)

D
a
t
a
B
i
r
d

Toutes les lettres du mot “Python” ont été affichées une par une.

Effectuer une boucle FOR sur une liste

Les listes sont les objets itérables les plus simples en Python.

for i in [“Data”, “Bird”] :
  print(i)

La liste [“Data”, “Bird”, “Python”] contient trois objets de type “string” (chaîne de caractères en Python, c’est-à-dire des mots). La lettre i prend successivement toutes les valeurs de la liste. 

Le résultat de l’exécution de cette boucle sera donc :

Data
Bird

Petit point syntaxe : il faut bien penser à deux choses quand on écrit une boucle FOR :

  1. Terminer la première ligne par “:”
  2. Indenter toutes les lignes qui composent le corps de la boucle.

Une indentation correspond à quatre espaces ou à un appel de la touche “tab”.

Tabulation - Boucle FOR

N’hésite pas à consulter la documentation officielle de Python si tu es bloqué sur une boucle FOR

Effectuer une boucle FOR sur un dictionnaire

Un dictionnaire est un peu plus compliqué à prendre en main qu’une liste. Chaque élément d’un dictionnaire est composé d’une clé et d’une valeur.

mon_dictionnaire = {“Data” : 1, “Bird” : 2 }

On peut utiliser une boucle FOR sur les valeurs, sur les clés, ou même sur les deux ! Dans ce dictionnaire, chaque mot (la clé) est associé à un chiffre (la valeur). Par exemple, pour connaître la valeur de la clé “Data”, on écrit mon_dictionnaire[“Data”] et Python répond “1”.

Ainsi, pour itérer sur les valeurs du dictionnaire uniquement, on écrit la boucle suivante :

for i in mon_dictionnaire :
  print (mon_dictionnaire[i])

1
2
3

L’exécution de cette boucle conduit à l’affichage des valeurs du dictionnaire (1, 2 et 3).

Cependant, par défaut, une boucle FOR itère sur les clés du dictionnaire :

for i in mon_dictionnaire :
  print(i)

Data
Bird
Python

Pour effectuer une boucle sur les clés et les valeurs en même temps, on utilise deux variables : key et value.

for key, value in mon_dictionnaire.items()
  print (“La clé est“, key, “et la valeur associée est”, value)

La clé est Data et la valeur associée est 1.
La clé est Bird et la valeur associée est 2.
La clé est Python et la valeur associée est 3.

La boucle ci-dessus permet d’itérer à la fois sur la clé et sur la valeur de chaque élément du dictionnaire.

La fonction range()

La fonction range() s’utilise souvent en synergie avec la boucle FOR. Elle permet de définir le nombre de fois qu’une boucle FOR va être répétée.

Attention : dans ce cas, la boucle va s’exécuter autant de fois que l’instruction range() le demande. Autrement dit, le nombre de boucles ne dépend plus de l’objet itérable.

Voici un exemple :

for i in range(5)
  print(“Data”)

Data
Data
Data
Data
Data

Ci-dessus, range(5) demande à Python d’exécuter l’instruction print(“Data”) 5 fois. 

La fonction range() permet donc de définir le nombre de fois qu’on réitère une instruction.

Pourquoi et comment apprendre à faire des boucles FOR ?

Tu l’as compris, le principal intérêt de la boucle FOR est de te faire gagner du temps en automatisant une partie du code. Pour devenir un Data Analyst efficace en entreprise, maîtriser la boucle FOR est crucial.

En effet, un Data Analyst doit gérer de grandes quantités de données : celles qui sont générées par l’entreprise et celles qu’il récupère grâce à une API REST ou au web-scraping

La boucle FOR permet donc d’optimiser ton code, et d’exécuter grâce à une seule instruction des centaines, voire des milliers d’opérations.

Un exemple d'utilisation

Je te donne un exemple concret. Imagine que tu travailles pour une marque de soda. Tu effectues une veille concurrentielle et tu veux évaluer le prix moyen d’une bouteille de soda sur le marché. Tu te procures un set de données qui contient des informations sur les concurrents.

Les prix pratiqués sont regroupés dans la liste liste_de_prix. Sauf que tu t’aperçois que ton dataset n’est pas parfait : cette liste contient des cases vides ! Cela risque de compromettre tes calculs.

La boucle FOR te permet alors de nettoyer ton set de données rapidement. Tu peux parcourir la liste des prix et supprimer chaque case vide en exécutant la boucle suivante :

for i in liste_de_prix :
  if i == None :
    list_de_prix.remove('i')

Chez Databird, nous proposons une formation qui te permet de prendre en main les outils du Data Analyst. Notre philosophie pédagogique est l’apprentissage par la pratique. Pendant notre formation (à temps plein, à temps partiel ou en continu), tu découvres l’univers de la Data et tu acquiers les bons réflexes afin de devenir opérationnel et efficace en entreprise.

Découvrir la formation Data Analyst

Sortir d’une boucle Python avec l’instruction break

L’instruction break permet de sortir d’une boucle FOR avant la fin naturelle de celle-ci, c’est-à-dire avant d’avoir parcouru tous les éléments de la collection.

for i in [“Data”, “Bird”, “Bootcamp”] :
  if i == “Bird”
    break
  print(i)

Data

Ici, la boucle FOR a tourné jusqu’à atteindre le deuxième élément de la collection : le mot “Bird”. Lorsque la boucle atteint “Bird”, elle s’arrête immédiatement. Comme elle s’est arrêtée avant l’instruction print(“Bird”) seul le mot Data est affiché.

Ici, la boucle FOR est associée à une condition IF qui arrête la boucle dès qu’elle rencontre le mot “Bird”.

Remarque : l’instruction break est toujours couplée à un test de logique avec IF.

L’instruction continue

L’instruction continue est un peu l’inverse de l’instruction break. Elle indique à Python de continuer la boucle sans compléter l’itération actuelle, si telle condition est remplie.

for i in [“Data”, “Bird”, “Python”] :
  if i != “Python”
    continue
  print(i)

Python

Remarque : en langage Python on symbolise “est différent de” par !=

Ici, on demande à chaque itération de vérifier si l’item de la séquence est différent de “Python”. Si i est différent de Python, alors l’itération actuelle est interrompue et on passe directement à l’item suivant. Ainsi, les deux premiers éléments de la séquence sont ignorés, car les deux premiers mots “Data” et “Bird” ne correspondent pas à “Python”. Seule la troisième itération est effectuée, car i est bien égal à “Python”. 

L’instruction pass

Au contraire, l’instruction pass permet à la boucle d’ignorer un test logique IF. Elle est placée juste après le test logique IF, et indique au programme de continuer à exécuter la boucle quel que soit le résultat de ce test.

for i in ["Data", "Bird", "Python"] :
  if i == "Python" :
    pass
  print(i)

Data
Bird
Python

Remarque : en langage Python, l’expression “est égal à” est symbolisée par ==

Ici, même si la condition IF est parfois vraie et parfois fausse, la boucle continue comme si de rien n’était.

Ici, l’instruction pass demande de continuer la boucle même si la condition est vraie. Autrement dit, cette instruction n’a aucun impact sur le code dans ce cas.

L’instruction pass peut être utile lorsqu’on élabore un algorithme mais qu’on souhaite qu’il s’exécute sans erreur même si tous les détails ne sont pas définis. 

Par exemple, si on supprime l’instruction pass dans le code ci-dessus, Python afficherait un message d’erreur car il ne saurait pas quoi faire quand la condition est vraie. Pass permet d’éviter que Python tente d’exécuter du vide.

Faire une boucle dans une boucle : les boucles imbriquées

Boucle imbriquée Python

Tu te poses sans doute la question : oui, il est possible d’utiliser une boucle FOR dans une boucle FOR ! La syntaxe reste la même, il faut simplement être rigoureux dans les indentations et dans le choix des variables.

C’est par exemple utile lorsque tu fais face à une liste de listes. Voici un exemple :

ma_liste = [ ['apprendre', 'à', 'coder'] , ['c’est', 'vraiment', 'indispensable']]
for i in ma_liste :
  for j in i :
    print(j)

apprendre
à
coder
c’est
vraiment
super

Décortiquons cette imbrication de boucles. 

La liste ma_liste est composée de deux sous listes. Ces deux sous-listes sont les deux éléments de ma_liste. Appelons-les sous_liste_1 et sous_liste_2.

Liste dans une liste

La variable d’itération i prend donc la valeur sous_liste_1 puis la valeur sous_liste_2. Lors de la première itération, on sait que i équivaut à sous_liste_1

On entre alors dans la deuxième boucle. “Prendre un élément j dans i” signifie alors : “prendre un élément j dans sous_liste_1”. Ainsi, j prend successivement les valeurs “apprendre”, “à”, “coder”. 

Puis on sort de la deuxième boucle mais on est toujours dans la première boucle !

La variable i prend ensuite la valeur sous_liste_2. La variable j de la deuxième boucle va donc prendre les valeurs des éléments de sous_liste_2 : “c’est”, “vraiment” et “super”.

On sort de la deuxième boucle, et on sort également de la première. La boucle imbriquée est finie !

Boucler comme un pro avec les "compréhensions de liste" (list comprehension) en Python

Les listes de compréhension sont une technique qui permet de raccourcir encore plus ton code. 

La logique de la boucle FOR est conservée. Les seules différences :

  • une compréhension de listes ne s’écrit qu’en une seule ligne de code ;
  • une compréhension de listes ne fonctionne que sur les listes (pas sur les dictionnaires ni sur les chaînes de caractères).

Le principe est simple : à partir d’une première liste, tu appliques une instruction à chaque item de cette liste afin d’obtenir une seconde liste.

Par exemple, on peut utiliser l’instruction floor() pour arrondir chaque nombre décimal d’une liste à son entier inférieur et créer ainsi une nouvelle liste de nombres entiers.

list =[ 3.1, 1.8, 9.2, 3.3]
liste_arrondis = [floor(i) for i in list]
print(liste_arrondis)

[3, 1, 9, 3]

Voici une petite comparaison pour te montrer l’efficacité de la compréhension de liste :

{{tableaulist="/tableaux"}}

Voilà, tu connais désormais l’une des fonctionnalités les plus pratiques de Python !

Apprendre à coder est une compétence de plus en plus valorisée par les recruteurs. Devenir data driven est un enjeu de plus en plus important pour les entreprises, c’est pourquoi apprendre Python, le langage de référence en Data science, est un véritable atout sur ton CV.

T’orienter vers la data analyse peut donc donner un véritable coup de boost à ta carrière ! C’est pourquoi Databird délivre une formation orientée sur la pratique afin de donner à chaque “Databirdie” les compétences d’un data analyst opérationnel.

Je me forme à la data analyse à temps partiel
Je me forme à la data analyse à mon rythme
Partagez cet article :
linkedIn iconfacebook iconInstagram icon
Tu souhaites te former à la data ? 
équipe DataBird formation data analyse

Tu souhaites devenir data analyst

Notre formation intensive en présentiel ou en distanciel en data analyse est ouverte à tous types de profils. Tu es intéressé pour rejoindre notre communauté ? Postule pour en savoir plus.

croix
Webinar de présentation de nos formations le mercredi 1 février
Je m'inscris à l'événement
// Highlight JS