Introduction aux listes avec Python
La notion de liste, en algorithmique, apparaît dans le programme de maths de première générale et de premières technologiques. Des manipulations de listes en langage Python font partie des compétences à acquérir. Sur cette page, vous trouverez les principales instructions pour le faire.
Une liste est un ensemble ordonné d’éléments (contrairement à un ensemble). 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 liste.
Pour la créer, on peut définir liste en extension : liste = [1,2,3,4]. On peut aussi la générer (voir plus bas).
Un rang est affecté à chaque terme de liste. 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 (liste)
Pour afficher le terme de rang 3 (qui est 4) : print (liste[3])
Pour afficher le dernier terme : print (liste[-1])
Pour afficher le plus petit terme : print (min(liste)) et le plus grand : print (max(liste))
Modifications
Pour supprimer le terme de rang 3 : del liste[3] (del pour delete, supprimer).
Pour ajouter un terme à la fin de la suite : liste.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 liste.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) : listeInversee = list (reversed(liste)).
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 : listeTriee = sorted (liste)
Et pour remplacer une valeur de la liste par une autre ? Supposons que liste = [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 : liste[3] = 5
Comptages
Soit liste = [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(liste)). 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 comporte la valeur 2. On écrit : print (liste.count(2)) (count signifie compter).
Divers
Pour savoir si une valeur figure dans une liste : par exemple, 7 se trouve-t-il dans liste ? print(7 in liste). Le programme affichera False car 7 n’y est pas.
Opérations
On peut concaténer deux listes (nommons-les liste_a et liste_b). Soit liste_a = [1,2,3,4] et liste_b = [5,6], alors liste_a + liste_b = [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(liste_b*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 [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 :
liste = [ ]
for x in range(4) :
liste.append(x+1)
print (liste)
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 une liste en compréhension :
liste = [x + 1 for x in range(4)]
print (liste)
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).
liste = [round(10000 * 1.007**x) for x in range(25)]
print (liste)
Voir aussi la seconde partie de la page consacrée aux tirages aléatoires avec Python, l'exemple de liste avec Python (construction du triangle de Pascal) et le filtrage des données. Les exemples de p-uplets peuvent être réécrits avec emploi de listes.