Aller au contenu

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 :

🐍 Script Python
maliste = []
for i in range(50):
    maliste.append(2*i)
Pour rappel, 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" :

🐍 Script Python
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 :

🐍 Script Python
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 :

🐍 Script Python
liste_j = ['lundi', 'mardi', 'jeudi', 'vendredi', 'samedi', 'dimanche']
liste_j.insert(2, 'mercredi')# pour insérer la valeur 'mercredi' en position 2
la liste 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 :

🐍 Script Python
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 :

🐍 Script Python
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 :

🐍 Script Python
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 :

🐍 Script Python
maliste = ['Tic', 'Tac', 'Toc']
n = len(maliste)
la variable 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 :
🐍 Script Python
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 :

🐍 Script Python
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

🐍 Script Python
# en utilisant les indices
for i in range(len(maliste)):
    ...
ou
🐍 Script Python
# 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