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