Modifier les éléments d'une liste
Apprenez à modifier les éléments d'une liste Python avec l'affectation par index, le slicing, append(), insert(), extend() et la compréhension de liste.
Les listes Python sont mutables, ce qui signifie que vous pouvez modifier leur contenu après leur création. Ce chapitre couvre toutes les techniques pratiques pour modifier les éléments d'une liste : l'affectation directe par index, le remplacement par slice, append(), insert(), extend() et la compréhension de liste. Savoir quand utiliser chaque approche est essentiel pour écrire un code Python propre et efficace.
Modifier un seul élément par index
La façon la plus directe de modifier un élément est d'affecter une nouvelle valeur à sa position d'index. Les indices de liste commencent à 0.
fruits = ["apple", "banana", "cherry"]
fruits[1] = "mango"
print(fruits)Résultat :
['apple', 'mango', 'cherry']L'indexation négative compte depuis la fin de la liste. L'index -1 correspond au dernier élément, -2 à l'avant-dernier, et ainsi de suite.
colors = ["red", "green", "blue"]
colors[-1] = "yellow"
print(colors)Résultat :
['red', 'green', 'yellow']Si vous essayez d'affecter une valeur à un index inexistant, Python lève une IndexError. Utilisez les patterns d'accès aux listes ou len() pour rester dans les limites.
Remplacer une plage d'éléments avec le slicing
L'affectation par slice remplace une section contiguë d'une liste par une autre liste. Le slice my_list[start:end] sélectionne les éléments de l'index start jusqu'à (mais sans inclure) l'index end.
Résultat :
[1, 20, 30, 5]Notez que la liste de remplacement n'a pas besoin d'avoir la même longueur que le slice. Ici, trois éléments (2, 3, 4) ont été remplacés par deux éléments (20, 30), réduisant la liste d'un élément.
Vous pouvez également insérer des éléments sans en supprimer aucun en utilisant un slice vide :
letters = ["a", "b", "e"]
letters[2:2] = ["c", "d"]
print(letters)Résultat :
['a', 'b', 'c', 'd', 'e']append() — ajouter un élément à la fin
La méthode append() ajoute un seul élément à la fin d'une liste et modifie la liste en place. Elle ajoute toujours exactement un élément, même si cet élément est lui-même une liste.
Résultat :
[1, 2, 3, 4, 5]Ajouter une liste comme élément unique l'imbrique plutôt que de la fusionner :
my_list = [1, 2, 3]
my_list.append([4, 5])
print(my_list)Résultat :
[1, 2, 3, [4, 5]]Utilisez plutôt extend() si vous souhaitez fusionner tous les éléments d'une autre liste.
insert() — ajouter un élément à une position spécifique
La méthode insert() place un nouvel élément à un index donné, en décalant tous les éléments suivants d'une position vers la droite.
Résultat :
[1, 2, 99, 3, 4]insert() ne lève jamais d'IndexError pour des positions hors limites. Si vous passez un index plus grand que la longueur de la liste, l'élément est ajouté à la fin. Si vous passez un index négatif au-delà du début, il est ajouté au début.
extend() — fusionner un autre itérable dans la liste
La méthode extend() ajoute chaque élément d'un itérable (liste, tuple, string, etc.) à la fin de la liste. La liste d'origine s'agrandit en place.
Résultat :
[1, 2, 3, 4, 5, 6, 7]extend() vs append() en un coup d'œil :
| Méthode | Ce qu'elle ajoute | Résultat pour [1,2] + [3,4] |
|---|---|---|
append([3,4]) | Un élément (une liste imbriquée) | [1, 2, [3, 4]] |
extend([3,4]) | Chaque élément individuellement | [1, 2, 3, 4] |
Compréhension de liste — transformer des éléments avec une nouvelle liste
La compréhension de liste crée une nouvelle liste en appliquant une expression à chaque élément (avec un filtre optionnel). Après la compréhension, vous réaffectez la variable — la liste d'origine n'est pas modifiée en place.
Résultat :
[4, 8, 12]Vous pouvez également transformer chaque élément sans filtrer :
prices = [10.0, 25.5, 8.75]
discounted = [round(p * 0.9, 2) for p in prices]
print(discounted)Résultat :
[9.0, 22.95, 7.88]Utilisez la compréhension de liste lorsque vous souhaitez une formule concise et lisible pour produire une copie modifiée d'une liste.
Choisir la bonne approche
| Objectif | Meilleure méthode |
|---|---|
| Modifier un élément à une position connue | Affectation par index list[i] = value |
| Remplacer une plage d'éléments | Affectation par slice list[a:b] = new_items |
| Ajouter un élément à la fin | append() |
| Ajouter un élément à une position spécifique | insert(index, value) |
| Fusionner tous les éléments d'un autre itérable | extend() |
| Produire une copie modifiée selon une règle | Compréhension de liste |
Pour supprimer des éléments d'une liste, consultez Supprimer des éléments de liste. Pour trier une liste en place, consultez Trier les listes. Pour une référence complète de toutes les méthodes de liste, consultez Méthodes de liste.