Itérer sur les éléments d’une liste – Liste de compréhension

Itérer sur les éléments d'une liste - Liste de compréhension

Itérer sur les éléments d’une liste – Liste en compréhension

 

L’objectif du cours est, à travers des exemples, de montrer l’itération sur les éléments d’une liste, que l’on peut construire en compréhension.

En parcourant une liste initiale et en effectuant une opération, on crée une nouvelle liste, qui est une sous liste de la liste principale. C’est la construction en compréhension.

 

On définit un tableau L par :
L = [10, 20, 30, 40, 50]

On souhaite calculer la somme des éléments de L.
On commence pour cela par créer une variable qui contiendra la somme, que l’on initialise à 0.

somme = 0
for i in L: #on parcourt les éléments du tableau L
   somme = somme + i 
print(somme)
>> 150 

On peut créer une liste en compréhension à l’aide de liste pré enregistrée.
Par exemple, on souhaite créer une liste contenant les entiers pairs compris entre $1$ et $12$ à l’aide d’une liste contenant tous les entiers entre $1$ et $12$. 

pair = [] #on crée une liste qui contiendra les entiers pairs
for n in range(1,13): #on crée une liste d’entiers allant de 1 à 12
    if n%2==0: #si le reste de la division euclidienne de l’entier par 2 est nul, alors le nombre est pair
       pair.append(n) #on ajoute à la liste pair l’entier n
print(pair)
>> [2, 4, 6, 8, 10, 12]

Une manière plus succincte de définir pair en compréhension est :

pair = [n for n in range(1,13) if n%2==0]

On souhaite ici créer une liste carre en compréhension.

carre = []
for i in range(1,16): #on parcourt les entiers allant de 1 à 15 inclus
   carre.append(n**2) #on ajoute à la liste carre le carré de n
print(carre)
>> [1, 4, 9, 16, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225]

Une autre manière de créer la liste carre est :
carre = [n**2 for n in range(1, 16)]

Enfin, on souhaite créer une liste syracuse à partir d’une liste d’entiers de 1 à 20.
Si l’élément est pair, on le divise par deux, sinon on multiplie l’élement par 3 puis on ajoute 1.

syracuse = [n/2 if n%2==0 else 3*n+1 for n in range(1, 21)]

Tu veux réviser 2x plus vite ?

Découvre les offres des Bons Profs avec :