Vous souhaitez travailler dans le Big Data en tant que Data Analyst, Data Engineer ou bien en tant que Data Scientist ? Alors la maitrise de quelques langages de programmation est utile pour que vous puissiez exécuter vos tâches convenablement. En plus de Scala et Java, depuis quelque temps, maitriser Python est devenu indispensable. Et si vous voulez utiliser ce langage, vous devez apprendre comment utiliser les boucles. Dans cet article, nous allons nous intéresser à la boucle for en Python.

Si vous développez un outil pour l’automatisation de vos analyses de données, pour la génération de vos tableaux de bord ou bien pour l’élaboration de vos modèles statistiques, vous serez amené à parcourir des millions, voir des milliards de données. Effectuer ce genre de tâches manuellement est très fastidieux. C’est justement pour éviter cela que les boucles ont été conçues et ont été introduites dans tous les langages de programmation, quel que soit le paradigme qu’il implémente.

Dans ce tutoriel exhaustif, nous allons vous apprendre à utiliser la boucle for en Python pour que vous puissiez l’utiliser dans vos futurs projets Big Data.

Présentation de la boucle for en Python

Comme expliqué dans sa documentation officielle, la boucle for en Python est utilisée pour effectuer une itération sur une collection d’objets. Une collection ou une séquence peut être une liste, un tuple, une chaine de caractère, un dictionnaire. En fait, on peut soumettre tous les objets itérables à une boucle for si l’on souhaite parcourir et interagir avec les données contenues dans ces objets.

La syntaxe de la boucle for en Python est la suivante :

for element in collection:
instructions

Ici, collection est la séquence que nous allons parcourir. La variable element est la variable qui recevra l’élément de la séquence traité. Et instructions est l’ensemble des manipulations que nous allons effectuer pour l’élément element.

Si vous n’êtes pas novice en programmation, vous allez constater que la boucle for en Python ressemble plus à une boucle foreach dans d’autres langages comme PHP, C# ou Java. Vous pouvez le vérifier dans l’article que nous avons consacré à la boucle for-each en Java. En effet, dans ces autres langages, pour itérer sur une séquence d’objet, c’est-à-dire un ensemble d’objets dont on ne connait pas forcément le point de départ, le point d’arrivée et/ou la longueur de la collection, on n’utilise pas la boucle for, mais plutôt foreach, ce qui rend Python si particulier.

Utilisation de la boucle for en Python

Pour pouvoir utiliser la boucle for en Python, vous devez en premier lieu (et cela va de soi) avoir une notion en Python. Nous avons un article qui vous initie justement à la programmation Python pour la data.

Tout d’abord, nous allons voir comment fonctionne cette boucle avec un organigramme.

Organigramme de la boucle for en Python

boucle for Python organigramme
Organigramme de la boucle for en Python

Une boucle for parcours une collection en partant de la première entrée de celle-ci. Il effectue par la suite les instructions se trouvant dans le corps de la boucle pour cet élément. Et tant que la séquence n’est pas vide, il exécute le corps sur l’ensemble des éléments suivants cette première entrée. Dès que le traitement de chaque élément s’achève, la boucle s’arrête et le programme suit son acheminement.

Exemples d’utilisation

Maintenant que vous avez vu comment la boucle for en Python fonctionne en général, passons à quelques exemples plus concrets pour que vous puissiez visualiser plus en détail l’utilisation de cette boucle.

Exemple #1 : La boucle for dans une itération simple

Comme nous l’avons mentionné un peu plus haut, la boucle for s’utilise sur n’importe quel objet itérable. Prenons donc l’exemple d’une liste simple :

MaList = ["toto", "tata", "titi"]
for i in MaList:
    print(i)
    

toto
tata
titi

Dans cet exemple, nous parcourons une liste qui contient trois chaines de caractère dans le but de les afficher. La variable i prend donc la valeur du premier élément contenu dans la liste, à savoir « toto ». Elle prend ensuite les autres valeurs une par une et les affiche l’une après l’autre.

Exemple #2 : La boucle for sur un dictionnaire

Tout d’abord, un dictionnaire est une collection d’objets possédant une clé et une valeur. Chaque clé est donc associée à sa valeur respective. Nous pouvons utiliser la boucle for pour interagir avec chaque ensemble clé/valeur.

Voyons cet extrait de code représentant le parcours d’un dictionnaire avec une boucle for en Python :

dict = { "toto" : 1, "tata" : 2, "titi" : 3 }
for i in dict:
    print (i)
    
toto
tata
titi

Comme vous le voyez, le résultat de ce code est l’affichage de toutes les clés contenues dans le dictionnaire.

Pour obtenir les valeurs associées aux clés, vous pouvez procéder comme suit :

dict = { "toto" : 1, "tata" : 2, "titi" : 3 }
for i in dict:
    print (dict[i])
    
1
2
3

Ici, en écrivant dict[i], vous faites référence à la valeur possédant la clé i. Donc, à chaque itération, vous parcourez le dictionnaire pour afficher la valeur de dict[“toto”], dict[“tata”] et dict[“titi”].

Une autre manière d’obtenir le même résultat est d’appliquer la méthode values() comme dans l’exemple ci-dessous :

dict = { "toto" : 1, "tata" : 2, "titi" : 3 }
for i in dict.values():
    print (i)
    
1
2
3

Et pour obtenir à la fois la clé et la valeur de chaque élément du dictionnaire, vous pouvez utiliser la méthode items(). Pour ce faire, vous devez procéder comme suit :

dict = { "toto" : 1, "tata" : 2, "titi" : 3 }
for key, value in dict.items():
    print ('clé : ', key, ', valeur : ', value)
    
clé : toto, valeur : 1
clé : tata, valeur : 2
clé : titi, valeur : 3

Exemple #3 : La boucle for sur une chaine de caractère

Comme son nom l’indique, une chaine de caractère est un ensemble de caractère. C’est-à-dire que l’on peut sélectionner chaque caractère un par un, ce qui fait d’elle un objet itérable. Et nous savons que chaque objet itérable peut être parcouru à l’aide d’une boucle for en Python.

L’exemple qui suit affichera chaque lettre du mot « boucle » :

for i in "boucle":
    print (i)
b
o
u
c
l
e

Les boucles imbriquées

Comme dans la plupart des langages, vous pouvez faire appel à d’autres boucles à l’intérieur d’une boucle for en Python, c’est ce que l’on appelle une boucle imbriquée.

Prenons comme exemple une liste de liste pour implémenter deux boucles imbriquées :

MaList = [[a,b,c],[d,e,f],[g,h,i]]
for item1 in MaList:
    for item2 in item1:
    print (item1,' contient : ',item2)

[a,b,c] contient : a
[a,b,c] contient : b
[a,b,c] contient : c
[d,e,f] contient : e
[d,e,f] contient : f
[d,e,f] contient : g
[g,h,i] contient : j
[g,h,i] contient : k
[g,h,i] contient : l

Dans cet extrait de code, la boucle débute par le parcours de la première liste contenue dans MaList. Tant que cette dernière contient un élément, la boucle exécute l’instruction d’affichage. Elle passe ensuite sur la prochaine liste et ainsi de suite.

Les fonctions et instructions associées

Lorsque vous allez exécuter une boucle for, vous serez souvent amené à les utiliser avec certaines fonctions et méthodes, comme vous l’avez constaté dans l’utilisation de la boucle sur un dictionnaire (souvenez-vous, nous avons utilisé items() pour référencer l’ensemble clé/valeur de celui-ci).

Ici, nous allons principalement voir la fonction range(). Nous allons également voir quelques instructions que l’on utilise avec la boucle for en Python.

La fonction range()

La fonction range() permet de renvoyer une séquence de chiffre. On peut utiliser cette fonction de plusieurs manières :

r = range(10)

Ici, vous allez obtenir une séquence de nombre allant de 0 à 9 et pour les afficher, par exemple, vous pouvez utiliser la boucle for comme suit :

r = range(10)
for i in r:
    print(i)

0
1
2
3
4
5
6
7
8
9

Vous pouvez également préciser le point de départ en ajoutant un deuxième paramètre dans la fonction. Et avec un troisième paramètre, vous pouvez également préciser une valeur d’incrémentation  :

r1 = range(5,10)
r2 = range(0,10,2)
for i in r1:
    print(i)
    
print('----')
    
for j in r2:
    print(j)
5
6
7
8
9
---
0
2
4
6
8

Dans l’exemple ci-dessus, r1 est une séquence de chiffre allant de 5 à 9. Quant r2, c’est une séquence de chiffre allant de 0 à 9, mais avec une itération de 2, c’est-à-dire qu’il ne prendra pas en compte 9 puisqu’il ne faut qu’une seule itération pour atteindre 9.

Note : lorsque l’on déclare un attribut de range(x), l’itération s’arrêtera à x-1. C’est-à-dire que x ne sera pas pris en compte.

Les instructions break et continue

Les instructions break et continue indiqueront à une boucle for en Python ce qu’il faut faire lorsqu’une condition survient ou non.

L’instruction break permet de sortir de la boucle si la condition est remplie :

MaList = ["toto", "tata", "titi"]
for item in MaList:
    if item == "tata":
        break
    print(item)

Ici, si item contient la valeur « tata », la boucle s’arrête et le programme se poursuit.

L’instruction continue, quant à elle, permet de passer à l’itération suivante si la condition survient :

MaList = ["toto", "tata", "titi", "tutu"]
for item in MaList:
    if item != "titi":
        continue
    print(item)

Dans cet exemple, si item est différent de « titi », la boucle passe directement à l’instruction suivante.

Utiliser else dans une boucle for

On peut ajouter des instructions à exécuter une fois la boucle for épuisée. Ces instructions seront introduites à l’aide de l’instruction else à la fin de la boucle. Toutefois, si vous incorporez une instruction break à l’intérieur de votre boucle for, les instructions contenues dans else ne s’exécuteront pas.

Voyons cet exemple :

MaList = ["toto", "tata", "titi"]
for item1 in MaList:
    print(item1)
else:
    print('parcours terminé')

for item2 in MaList:
    if item2 == "tata":
        break
    print(item2)
else:
    print('parcours terminé')

Comme vous le pouvez le constater, nous avons deux boucles for. Attention, dans ce cas, nous n’avons pas deux boucles imbriquées, mais deux boucles distinctes qui agissent sur la même liste.

Dans la première boucle, nous retrouvons une instruction else s’exécutera une fois le parcours de la liste achevé. Dans la seconde, par contre, dès que l’instruction break sera exécutée, la boucle se terminera et le programme se poursuivra sans passer par l’instruction else.

L’instruction pass

Il faut savoir qu’une boucle for ne s’exécute pas sur une collection vide. Si cela se produit, une erreur se déclenchera au sein de votre programme. Cependant, il existe un moyen d’éviter de générer ce genre d’erreur en mettant l’instruction pass dans la boucle for :

MaList = ["toto", "tata", "titi"]
for item1 in MaList:
    pass

Voilà, nous arrivons à la fin de ce tutoriel ! Vous avez désormais toutes les cartes en main pour pouvoir utiliser la boucle for de Python sans rencontrer de difficulté.

Si vous souhaitez connaitre toutes les opérations possibles dans la programmation informatique ou si vous voulez vous initier à cette pratique, vous pouvez consulter notre article dédié à cela ici.

Et pour aller plus loin dans la programmation pour le Big Data, nous vous offrons cette formation sur la programmation Scala.

>