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)

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 le 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]
suite = [-1, 2, 12, -7]
maliste.extend(suite)

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

la liste liste_j contiendra alors : ['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'].

Modification d'une liste :
  • Pour ajouter une valeur val à la fin d'une liste ze_liste, j'utilise 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 à la position i d'une liste ze_liste, j'utilise insert(..., ...) :
    ze_liste.insert(i, val)

Exercice : 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

A 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]
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]
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

Sans utiliser les indices

Il est très simple d'afficher les éléments d'une liste à l'aide d'une boucle for, par exemple :
maliste = ['Tic', 'Tac', 'Toc']
for element in maliste:
    print(element)

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.

Cliquez sur l'onglet Graphisme puis exécutez le script.

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)
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 :

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]
# 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].

Cela peut se faire en compréhension (si vous avez compris...) :

liste_somme = [liste1[k] + liste2[k] for k in range(len(liste1))]

Exercice : parcourir une liste

  1. Un petit QCM sur les listes.
  2. TD sur les listes.
Suite