Introduction
À l'instar d'autres langages de programmation, les boucles d'for s en Python sont légèrement différentes dans le sens où elles fonctionnent davantage comme un itérateur et moins comme un mot-clé d'for. En Python, il n'existe pas d'C, comme la syntaxe for(i=0; i<n; i++), mais vous pouvez utiliser for in n.
Ils peuvent être utilisés pour parcourir une séquence d'list, string, tuple, set, array, data frame.
À partir d'une liste d'éléments, une boucle for peut être utilisée pour parcourir chaque élément de cette liste et l'exécuter.
Pour parcourir une série d'éléments, les boucles « for » utilisent la fonction range. La fonction range renvoie une nouvelle liste contenant les nombres de la plage spécifiée en fonction de la longueur de la séquence.
Lorsque vous parcourez une séquence, vous pouvez également utiliser l'index des éléments de la séquence pour effectuer le parcours, mais il est essentiel de calculer d'abord la longueur de la liste, puis de parcourir la série dans la limite de cette longueur.
for Les boucles « for », « while » et « for-if » en Python sont indexées à partir de zéro.
Passons rapidement à la partie mise en œuvre.
Vous pouvez également visionner cette vidéo pour un tutoriel rapide.
Mise en œuvre des boucles
Pour commencer, veuillez imprimer les nombres compris entre 1 et 10. for Étant donné que les boucles « for » et « while » en Python sont indexées à partir de zéro, il est nécessaire d'ajouter un à chaque itération ; sinon, les valeurs affichées iront de 0 à 9.
for i in range(10):
print (i+1)
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
Veuillez parcourir une chaîne de caractères d'un mot Datacamp à l'aide d'une boucle for et n'imprimer que les lettres a.
for i in "Datacamp":
if i == 'a':
print (i)
# a
# a
# a
Supposons que vous souhaitiez définir une liste d'éléments et parcourir ces éléments un par un.
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in sequence:
print (i)
# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial
Cependant, que faire si vous souhaitez déterminer la longueur de la liste et ensuite l'itérer ? Vous utiliserez la fonction intégrée len, puis vous appliquerez range à la sortie de longueur.
Veuillez noter que l'range e attend toujours une valeur entière.
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
print (sequence[i])
# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial
Excellent ! Cependant, pourquoi est-il nécessaire d'utiliser la fonction len alors que l'on peut directement utiliser for i in numbers? La réponse est simple. Si vous souhaitez modifier ou manipuler les indices de la séquence, par exemple en changeant l'élément d'une liste existante, vous devrez utiliser range(len(sequence)).
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
element = sequence[i]
if type(element) == int:
sequence[i] = element + 4
print(sequence)
# [5, 6, 12, 104, 204, 'datacamp', 'tutorial']
C'est intéressant, n'est-ce pas ? Vous avez pu modifier les éléments de la liste en fonction de la condition d'if.
Voyons maintenant comment imprimer les nombres impairs compris entre 1 et 20. Pour ce faire, vous devrez définir trois éléments dans la fonction d'range. Le point de départ, le point d'arrivée et la valeur d'incrémentation (ou pas) à laquelle la boucle incrémentera les nombres de 1 à 20.
for i in range(1,20,2):
print (i)
# 1
# 3
# 5
# 7
# 9
# 11
# 13
# 15
# 17
# 19
Boucle for imbriquée
for i in range(11):
for j in range(i):
print (i, end=' ')
print()
# 1
# 2 2
# 3 3 3
# 4 4 4 4
# 5 5 5 5 5
# 6 6 6 6 6 6
# 7 7 7 7 7 7 7
# 8 8 8 8 8 8 8 8
# 9 9 9 9 9 9 9 9 9
# 10 10 10 10 10 10 10 10 10 10
Boucle « for » pour parcourir les lignes et les colonnes d'un DataFrame
import pandas as pd
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
iris.head()
| sepal_length | sepal_width | petal_length | petal_width | espèces | |
|---|---|---|---|---|---|
| 0 | 5.1 | 3,5 | 1,4 | 0,2 | setosa |
| 1 | 4,9 | 3,0 | 1,4 | 0,2 | setosa |
| 2 | 4,7 | 3.2 | 1.3 | 0,2 | setosa |
| 3 | 4,6 | 3.1 | 1,5 | 0,2 | setosa |
| 4 | 5,0 | 3,6 | 1,4 | 0,2 | setosa |
len(iris)
# 150
for i in range(len(iris)):
Class = iris.iloc[i,4]
if Class == 'versicolor' and i < 70:
print (Class)
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
Ensuite, veuillez ajouter deux à chaque ligne des colonnes sepal_length,sepal_width, petal_length et petal_width.
columns = ['sepal_length','sepal_width','petal_length','petal_width']
for indices, row in iris.iterrows():
for column in columns:
iris.at[indices,column] = row[column] + 2
iris.head()
| sepal_length | sepal_width | petal_length | petal_width | espèces | |
|---|---|---|---|---|---|
| 0 | 7.1 | 5,5 | 3.4 | 2.2 | setosa |
| 1 | 6,9 | 5,0 | 3.4 | 2.2 | setosa |
| 2 | 6,7 | 5.2 | 3.3 | 2.2 | setosa |
| 3 | 6,6 | 5.1 | 3,5 | 2.2 | setosa |
| 4 | 7,0 | 5,6 | 3.4 | 2.2 | setosa |
Itération sur une séquence avec une fonction Lambda
La fonction lambda de Python est rapide et performante par rapport à la boucle de base for. Il est largement utilisé, en particulier dans le cadre du traitement des DataFrame. Vous pouvez traiter vos données à l'aide de la fonction Lambda avec très peu de code. Cependant, il est parfois difficile de le comprendre.
x = [20, 30, 40, 50, 60]
y = []
for v in x :
y += [v * 5]
print(y)
# [100, 150, 200, 250, 300]
Maintenant, essayons cela avec une fonction lambda et une fonction map.
Map accepte une fonction, par exemple une fonction lambda et une séquence x, puis renvoie une nouvelle séquence.
x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)
print(y)
# <map object at 0x4063cc8>
Il renvoie une fonction génératrice et, pour obtenir la sortie de la génératrice, vous transmettez la sortie en tant qu'argument à list.
x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)
print(list(y))
# [100, 150, 200, 250, 300]
Maintenant, prenons un peu de recul et examinons à la fois la méthode en boucle d'for s et la combinaison lambda/map(). Vous remarquerez que la différence entre les deux réside dans l'ajout de map, lambda, et la suppression de « for » et « in ». De plus, vous avez réussi à le coder en une seule ligne.
Conclusion
Félicitations pour avoir terminé ce tutoriel de base sur la boucle « for » en Python.
Les boucles « for » constituent la base de tout langage de programmation. Dans le cas de Python, leur utilisation n'est pas difficile à coder et leur fonctionnement est similaire à la construction d'une phrase en anglais.
Si vous souhaitez en savoir plus sur les boucles for en Python, nous vous invitons à suivre le cours Python Data Science Toolbox (Partie 2) de DataCamp.
N'hésitez pas à poser toute question relative à ce tutoriel dans la section commentaires ci-dessous.
