Les boucles¶
Une boucle est un outil puissant pour éviter de répéter des opérations. Prenons une liste
[16]:
x = [1,2,3]
[17]:
x[0] *= 2
x[1] *= 2
x[2] *= 2
x
[17]:
[2, 4, 6]
On peut faire beaucoup mieux…
Itérateur for
¶
On peut itérer sur une liste de deux façons en utilisant un itérateur. D’abord, on peut le faire par l’indice, ce qui est la forme commune dans d’autres langages:
[18]:
x = [1,2,3]
for i in [0,1,2]:
x[i] *= 2
x
[18]:
[2, 4, 6]
On doit faire attention à l’indentation en Python. Pour une boucle, comme un fonction, il faut indenter ce qui roule à l’intérieur d’une boucle.
Python permet aussi d’utiliser le même itérateur de la manière suivante:
[19]:
x = [1,2,3]
[x[i]**2 for i in [0,1,2]]
[19]:
[1, 4, 9]
On peut aussi utiliser range
ou lieu de la liste sur les indices. len()
redonne le nombre d’éléments dans la liste.
[20]:
x = [1,2,3]
[x[i]**2 for i in range(len(x))]
[20]:
[1, 4, 9]
On peut aussi itérer sur les éléments de la liste directement. Ceci évite de gérer les indices.
[21]:
xs = [1,2,3]
[x**2 for x in xs]
[21]:
[100, 400, 900]
La fonction enumerate
¶
Parfois, on veut utiliser à la fois les indices d’une liste mais aussi itérer sur les éléments. Alors on utilise enumerate()
. Deux indices sont alors disponible dans la boucle: le premier est l’indice, le deuxième la valeur.
[22]:
xs = [10,20,30]
for i,x in enumerate(xs):
print('indice =',i,', valeur de la liste = ',x)
indice = 0 , valeur de la liste = 10
indice = 1 , valeur de la liste = 20
indice = 2 , valeur de la liste = 30
La fonction zip
¶
Parfois, il y a deux listes et on veut faire quelque chose éléments par éléments, on peut y aller directement au lieu de passer par les indices
[23]:
xs = [10,20,30]
zs = [4,2,3]
for x,z in zip(xs,zs):
print('x = ',x,', z = ',z)
x = 10 , z = 4
x = 20 , z = 2
x = 30 , z = 3
Boucles multiples¶
On peut facilement imbriquer des boucles.
[24]:
for x in xs:
for z in zs:
print('x = ',x,', z = ',z)
x = 10 , z = 4
x = 10 , z = 2
x = 10 , z = 3
x = 20 , z = 4
x = 20 , z = 2
x = 20 , z = 3
x = 30 , z = 4
x = 30 , z = 2
x = 30 , z = 3
Boucles while
¶
La boucle while
est utile quand on ne sait pas quand une répétition doit se terminer ou quand la terminaison dépendra d’un calcul qui doit être fait. Je donne un exemple
[26]:
todo = 5
while todo>0:
print('todo = ',todo)
todo -=1
todo = 5
todo = 4
todo = 3
todo = 2
todo = 1