Les listes avec Python

Introduction aux listes avec Python

La notion de liste, en algorithmique, apparaît dans le programme de maths de première. Certaines manipulations en langage Python font partie des capacités à acquérir. Sur cette page, vous trouverez les principales instructions pour le faire.

Une liste est un ensemble ORDONNÉ d’éléments. Théoriquement, on peut même y trouver un joyeux mélange d’entiers, de texte, de réels… C’est donc une variable qui contient des variables (on peut même construire une liste de listes, mais ce n’est pas l’objet de cette page introductive !).

 

Constitution et affichage

Soit une liste qui contient les entiers 1, 2, 3 et 4. Nommons-la \(L.\)

Pour la créer, on peut définir \(L\) en extension : L = [1,2,3,4]. On peut aussi la générer (voir plus bas).

Un rang est affecté à chaque terme de \(L.\) Mais attention, on compte à partir de zéro ! Donc, 1 occupe le rang 0 et 4 occupe le rang 3.

Pour afficher la liste entière : print (L)

Pour afficher le terme de rang 3 (qui est 4) : print (L[3])

Pour afficher le dernier terme : print (L[-1])

Pour afficher le plus petit terme : print (min(L)) et le plus grand : print (max(L))

 

Modifications

Pour supprimer le terme de rang 3 : del L[3] (del pour delete, supprimer).

Pour ajouter un terme à la fin de la suite : L.append(5). Ici, on a ajouté l’élément 5.

Pour insérer un terme : par exemple, on insère 6 entre 3 et 4 (c’est-à-dire au rang n° 3). On écrit L.insert(3,6).

Pour inverser les termes d’une liste (par exemple pour créer une série statistique en rang décroissant à partir d’une série triée en rang croissant) : M = list (reversed(L)).

Si la liste est désordonnée et que l’on souhaite la classer par ordre croissant, il faut là-aussi créer une autre liste : N = sorted (L)

Et pour remplacer une valeur par une autre ? Supposons que \(L = [1,2,3,4]\) et que l’on veuille la modifier en \([1,2,3,5].\) Il faut donc affecter la valeur 5 au rang 4 (puisque la première valeur se trouve, rappelons-le, au rang 0). Pour cela : L[3] = 5

 

Comptages

Soit \(L = [1,2,3,4].\) Comment savoir combien il y a de termes ? (oui, d’accord, en les comptant ; mais s’il y en a beaucoup, ça devient vite fastidieux). Il faut une instruction pour connaître la longueur (lenght) de la liste : print (len(L)). Et on obtient 4 (fabuleux, on a évité de compter jusqu’à 4).

Une liste peut aussi comporter plusieurs fois le même terme et vous serez peut-être amené à déterminer le nombre d’occurrences d’une valeur donnée. Supposons que l’on cherche combien de fois notre liste \(L\) comporte la valeur 2. On écrit : print (L.count(2)) (count signifie compter).

 

Divers

Pour savoir si une valeur figure dans une liste : par exemple, 7 se trouve-t-il dans \(L\) ? print(7 in L). Le programme affichera False car 7 n’y est pas.

 

Opérations

On peut concaténer deux listes. Soit \(L = [1,2,3,4]\) et \(M= [5,6],\) alors \(L + M = [1,2,3,4,5,6].\)

On peut aussi multiplier une liste par un entier, non pas pour en changer les valeurs mais pour faire apparaître plusieurs fois celles qui s’y trouvent. Ainsi print(M*2) permet d’obtenir \([5,6,5,6].\)

Ainsi, il est possible d’initialiser une liste : [0]*4 se traduit par \([0,0,0,0].\)

 

Génération d’une liste

Nous avons vu que la liste \(L = [1,2,3,4]\) pouvait être créée en extension. Comme elle n’a que quatre valeurs, il est rapide de les entrer toutes. Évidemment, ce n’est pas la seule façon de créer une liste.

Voyons autres deux techniques : avec une boucle for et en compréhension (c’est-à-dire avec un code le plus simplifié possible).

Avec une boucle, l’algorithme ressemble à ceci :

L = [ ]
for x in range(4) :
    L.append(x+1)
print (L)

On définit d’abord une liste vide, puis pour quatre rangs on fait l’opération « rang + 1 » (étant donné qu’il y a 1 de décalage entre le rang et la valeur de la variable \(x\)).

On peut aussi se passer de boucle en définissant tout de suite la liste :

L = [x + 1 for x in range(4)]
print (L)

 

Exemple

Cet exemple reprend les données d'un exercice sur l'évolution des suites.

Madame Trucmuche a gagné 10 000 euros et place cette somme sur un compte, au taux d’intérêt composé de 0,7 % par mois (un taux composé se caractérise par des intérêts versés qui produisent eux-mêmes des intérêts). Chaque montant est donc égal au précédent majoré par un coefficient multiplicateur. C’est une suite géométrique qui modélise cette situation. Nommons-la \((v_n).\) En l’occurrence, \(v_n = 10\,000 \times 1,007^n.\)

Écrivons un programme permettant de lister les sommes dont dispose Mme Trucmuche chaque mois pour les deux premières années (arrondies à l’euro avec l'instruction round).

L = [round(10000 * 1.007**x) for x in range(25)]
print (L)