Autres opérations sur les listes
Création par ajouts successifs et suppressions⚓︎
Ajouter des valeurs à la fin d'une liste⚓︎
Il est parfois plus commode de construire une liste au fur et à mesure.
Par exemple, si je veux construire la liste des nombres entiers pairs inférieurs à 100, il est laborieux de taper :
maliste = [0, 2, 4, 6, ..., 98]
les points de suspensions étant à compléter à la main (forcément...).
Dans ce cas, le plus rapide est de créer une liste vide puis
d'ajouter à la fin de cette liste chaque nombre un à un en utilisant la fonction append
:
maliste = []
for i in range(50):
maliste.append(2*i)
range(50)
produit une séquence de nombres de 0 à 49 et
for i in range(50)
fait en sorte que la variable i
prenne toutes les valeurs de 0 à 49.
Vous pouvez copier et tester (puis éventuellement modifier comme vous le souhaitez) le code précédent dans la fenêtre ci-dessous :
Fusionner des listes ("concaténation")⚓︎
Pour fusionner deux listes, il suffit de les "ajouter" :
maliste = [1, 2, 5, 9]
liste_ajouts = [-1, 2, 12, -7]
maliste = maliste + liste_ajouts
maliste
contiendra alors : [1, 2, 5, 9, -1, 2, 12, -7].
Moins important : il existe également la fonction extend
, l'exemple précédent peut aussi s'écrire :
maliste = [1, 2, 5, 9]
liste_ajouts = [-1, 2, 12, -7]
maliste.extend(liste_ajouts)
Insérer une valeur quelque part dans une liste⚓︎
Pour placer une valeur à un endroit précis d'une liste, il faut
utiliser la fonction insert
:
liste_j = ['lundi', 'mardi', 'jeudi', 'vendredi', 'samedi', 'dimanche']
liste_j.insert(2, 'mercredi')# pour insérer la valeur 'mercredi' en position 2
liste_j
contiendra alors : ['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche']
.
À retenir
Modification d'une liste
- Pour ajouter une valeur val à la fin d'une liste ze_liste, j'utilise la fonction
append
:
ze_liste.append(val)
- Pour fusionner deux listes liste1 et liste2, il suffit d'utiliser l'opérateur + :
liste_finale = liste1 + liste2
- Pour insérer une valeur val à une position i d'une liste ze_liste, j'utilise
insert
:
ze_liste.insert(i, val)
Exercices : ajout d'une valeur dans une liste
Pensez à faire défiler l'ascenseur à droite de l'exercice... Le deuxième exercice est buggué au niveau de l'affichage : il y a de grands espaces verticaux inutiles.
Supprimer un élément d'une liste⚓︎
À partir de sa valeur⚓︎
Pour supprimer une valeur d'une liste, nous pouvons
utiliser la fonction remove
:
maliste = [5, 12, 10, -6, 12, 20, 8]
maliste.remove(10)# pour supprimer la valeur 10 de la liste
#maliste contient maintenant [5, 12, -6, 12, 20, 8]
maliste.remove(12)# pour supprimer la valeur 12 de la liste
#maliste contient maintenant [5, -6, 12, 20, 8]
Attention
Si la valeur apparaît plusieurs fois dans la liste alors seule la première occurence de la valeur sera supprimée.
En utilisant son indice⚓︎
Pour supprimer un élément d'une liste placé à une position donnée, il faut utiliser la fonction del
:
maliste = [5, 12, 10, -6, 12, 20, 8]
del(maliste[0])# pour supprimer le premier élément
# maliste contient maintenant [12, 10, -6, 12, 20, 8]
del(maliste[3])# pour supprimer l'élément d'indice 3
# maliste contient maintenant [12, 10, -6, 20, 8]
À retenir
Suppression d'un élément d'une liste
- Pour supprimer la valeur val d'une liste ze_liste, utiliser
remove
:
ze_liste.remove(val)
(cela ne supprime que la première apparition de cette valeur) - Pour supprimer un élément défini par son indice,
il suffit d'utiliser
del
:
del(ze_liste[indice])
Exercice : suppression d'une valeur dans une liste
Parcourir une liste⚓︎
Si je veux consulter ou modifier tous les éléments d'une liste, j'utiliserai une boucle for
.
Sans utiliser les indices⚓︎
La syntaxe est très intuitive :
maliste = ['Tic', 'Tac', 'Toc']
for element in maliste:# pour chaque élément de ma liste
print(element)# l'afficher
Voici un autre exemple, dans lequel j'utilise ici le module Turtle de Python (vous pouvez lire les commentaires si vous voulez mieux comprendre la syntaxe). L'idée est de parcourir une liste de couleurs et, pour chacune, de tracer un trait.
from turtle import py-str# import de la librairie Turtlebksl-nlbksl-nlwidth(30)# épaisseur du traitbksl-nlforward(-200)# déplacer la tortue vers la gauchebksl-nlbksl-nlfor c in ['red', 'yellow', 'green', 'blue', 'brown', 'violet', 'purple', 'black', 'white', 'pink', 'orange', 'grey']:bksl-nl color(c)# change la couleur du traitbksl-nl forward(30)# fait avancer la tortue en ligne droite sur une distance de 30bksl-nl
A
Z
En utilisant les indices des éléments⚓︎
Une autre façon de parcourir une liste est d'utiliser les indices de ses éléments. Pour cela, remarquons que, dans le cas suivant :
maliste = ['Tic', 'Tac', 'Toc']
n = len(maliste)
n
contient la valeur 3 et range(n)
donnerait la séquence de nombres 0, 1, 2 ce qui correspond aux indices des termes de la liste maliste
.Il ne reste plus donc qu'à utiliser une variable
k
qui prendra pour valeur chaque indice possible :
maliste = ['Tic', 'Tac', 'Toc']
n = len(maliste)
for k in range(n):
print(maliste[k])
Ceci permet par exemple d'ajouter les valeurs de deux listes de même longueur :
liste1 = [2, 3, 4]
liste2 = [10, 11, 12]
# attention : liste1 + liste2 donnerait [2, 3, 4, 10, 11, 12]
liste_somme = []
for k in range(len(liste1)):
liste_somme.append(liste1[k] + liste2[k])
liste_somme
contiendra alors [12, 14, 16].
À retenir
Pour faire une boucle sur les éléments de la liste
# en utilisant les indices
for i in range(len(maliste)):
...
# sans les indices
for val in maliste:
...
Sans les indices
Dans certains cas, nous n'avons pas besoin des indices, seulement des valeurs.
Cependant, l'utilisation des indices est plus universelle (elle couvre plus de cas et plus de langages).
Exercice : parcourir une liste