Cette page suit toujours le même plan : le vocabulaire, un exemple concret, les opérations de base, les méthodes courantes, une démonstration interactive, le code Python, puis la complexité.
Chaque mot ci-dessous est utilisé exactement dans ce sens dans toute la page.
| Mot | Définition précise |
|---|---|
| Liste | Une suite ordonnée de valeurs, chacune repérée par un indice qui commence à 0. En Python, une liste s'écrit entre crochets : [valeur1, valeur2, ...]. |
| Indice | Le numéro qui repère la position d'un élément dans la liste. Le premier indice est 0, pas 1. |
| Élément | Une valeur individuelle contenue dans la liste. |
| Indice négatif | Un indice compté à partir de la fin de la liste : l[-1] désigne le dernier élément, l[-2] l'avant-dernier. |
| Liste mutable | Une liste dont on peut changer le contenu après sa création (ajouter, modifier, supprimer des éléments), contrairement par exemple à une chaîne de caractères. |
| Tranche (slice) | Une portion de la liste, obtenue avec un indice de début et un indice de fin séparés par deux points : l[debut:fin]. |
| Méthode | Une fonction associée à un objet, qu'on appelle avec un point : par exemple, liste.append(x) appelle la méthode append sur l'objet liste. |
On utilise une liste de courses à faire :
courses = ["pain", "lait", "oeufs"]
Cette liste contient 3 éléments : "pain" à l'indice 0, "lait" à l'indice 1, et "oeufs" à l'indice 2.
| Opération | Code Python | Résultat sur l'exemple |
|---|---|---|
| Créer une liste vide | l = [] | [] |
| Créer une liste avec des valeurs | courses = ["pain", "lait", "oeufs"] | 3 éléments créés |
| Accéder à un élément par son indice | courses[0] | "pain" |
| Accéder avec un indice négatif | courses[-1] | "oeufs" (le dernier élément) |
| Modifier un élément existant | courses[1] = "jus" | courses[1] vaut maintenant "jus" |
| Connaître la longueur de la liste | len(courses) | 3 |
| Tester si une valeur est présente | "lait" in courses | True |
| Extraire une tranche | courses[0:2] | ["pain", "jus"] |
| Concaténer deux listes | courses + ["pommes"] | ["pain", "jus", "oeufs", "pommes"] |
courses[0:2] donne les éléments d'indices 0 et 1, mais pas l'élément d'indice 2. De façon générale, l[debut:fin] contient les indices de debut jusqu'à fin - 1.
| Méthode | Effet | Exemple |
|---|---|---|
append(x) | ajoute x à la fin de la liste | courses.append("pommes") |
insert(i, x) | insère x à l'indice i (décale les éléments suivants vers la droite) | courses.insert(1, "beurre") |
remove(x) | supprime la première occurrence de la valeur x | courses.remove("lait") |
pop(i) | retire et renvoie l'élément d'indice i (le dernier si i est omis) | courses.pop(0) |
sort() | trie la liste par ordre croissant, directement sur place | courses.sort() |
reverse() | inverse l'ordre des éléments, directement sur place | courses.reverse() |
index(x) | renvoie l'indice de la première occurrence de x | courses.index("lait") |
count(x) | renvoie le nombre d'occurrences de x | courses.count("lait") |
append et insert ajoutent un élément (en décalant si besoin), remove et pop en retirent un (en décalant les suivants vers la gauche), et l'affectation par indice remplace un élément sans changer la longueur de la liste.
append : ils s'ajoutent à la fin, dans cet ordre.insert(1, "beurre") : "lait" et "oeufs" sont décalés d'une case vers la droite.remove("beurre") : les éléments suivants sont décalés d'une case vers la gauche.pop(1), qui renvoie sa valeur.sort().courses = []courses.append("pain")courses.append("lait")courses.append("oeufs")courses.insert(1, "beurre") # décale "lait" et "oeufs" vers la droitecourses[3] = "yaourt" # remplace l'ancien "oeufs"courses.remove("beurre") # retire la première occurrence de "beurre"valeur = courses.pop(1) # retire et renvoie l'indice 1courses.append("pommes")courses.sort() # trie par ordre alphabétique
| Instruction | Ce qu'elle fait |
|---|---|
for element in courses: | parcourt chaque élément, un par un, sans avoir besoin des indices |
for i in range(len(courses)): | parcourt chaque indice, un par un ; utile quand on a besoin de l'indice, ou pour modifier la liste pendant le parcours |
Python permet aussi de construire une nouvelle liste en une seule ligne, avec une compréhension de liste :
carres = [x**2 for x in range(5)]# Résultat : [0, 1, 4, 9, 16]
Une liste est mutable : deux noms de variable peuvent désigner la même liste en mémoire, et modifier l'un modifie aussi l'autre.
a = [1, 2, 3]b = a # b désigne la MÊME liste que a, ce n'est pas une copieb.append(4) # modifie aussi a : a vaut maintenant [1, 2, 3, 4]c = a.copy() # c est une VRAIE copie, indépendante de ac.append(5) # ne modifie pas a
l[i]) : O(1), quel que soit l'indice.append) : O(1) en moyenne.insert, remove, pop(i) avec i différent du dernier indice) : O(n), car il faut décaler tous les éléments suivants.in, index) : O(n) dans le pire cas, car il faut parcourir la liste jusqu'à la trouver.sort) : O(n log n).l[debut:fin] n'inclut jamais l'élément d'indice fin.append et l'accès par indice sont en O(1) ; insert, remove et la recherche sont en O(n).b = a) ne crée pas de copie : il faut a.copy() pour obtenir une liste réellement indépendante.[x**2 for x in range(5)], construit une nouvelle liste en une seule ligne.