Supprimer des éléments d'une liste
Apprenez à supprimer des éléments d'une liste Python : remove(), pop(), del, clear() et les compréhensions de liste, avec exemples et pièges courants.
Les listes Python sont des séquences mutables, ce qui vous permet de supprimer des éléments à tout moment. Ce chapitre couvre tous les outils intégrés pour supprimer des éléments d'une liste : remove(), pop(), l'instruction del, clear() et les compréhensions de liste. Chaque approche convient à une situation différente, et savoir laquelle choisir permet d'éviter des bugs courants.
Référence rapide
| Méthode / instruction | Supprime par | Retourne l'élément supprimé ? | Erreur si la cible est absente ? |
|---|---|---|---|
list.remove(value) | Première valeur correspondante | Non | ValueError |
list.pop() | Dernier élément (par défaut) | Oui | IndexError sur liste vide |
list.pop(index) | Élément à l'index | Oui | IndexError si hors limites |
del list[index] | Élément à l'index | Non | IndexError si hors limites |
del list[start:stop] | Tranche d'éléments | Non | Jamais (tranche vide acceptée) |
list.clear() | Tous les éléments | Non | Jamais |
| Compréhension de liste | Éléments correspondant à une condition | Non (retourne une nouvelle liste) | Jamais |
La méthode remove()
list.remove(value) trouve la première occurrence de value et la supprime. Si la valeur n'est pas présente, Python lève une ValueError.
Supprimer un élément par sa valeur
Seule la première occurrence est supprimée
Lorsqu'une valeur apparaît plusieurs fois, remove() supprime uniquement la première correspondance et laisse les autres :
my_list = [1, 3, 2, 3, 4, 3]
my_list.remove(3)
print(my_list) # [1, 2, 3, 4, 3]Se protéger contre ValueError
Vérifiez toujours que la valeur existe avant d'appeler remove(), ou interceptez l'exception :
Vérifier avec in avant de supprimer
Intercepter l'exception
my_list = [1, 2, 4, 5]
try:
my_list.remove(3)
except ValueError:
print("3 is not in the list")
# Output: 3 is not in the listSupprimer toutes les occurrences avec une boucle
Utilisez une boucle while pour continuer à supprimer une valeur jusqu'à ce qu'il n'en reste plus aucune :
Supprimer toutes les occurrences d'un élément
La méthode pop()
list.pop(index) supprime l'élément à l'index et le retourne, afin que vous puissiez utiliser la valeur. Si vous omettez l'index, elle supprime et retourne le dernier élément. Cela fait de pop() le choix idéal quand vous avez besoin de traiter la valeur supprimée.
Supprimer le dernier élément
Supprimer un élément à un index spécifique
my_list = [1, 2, 3, 4, 5]
item = my_list.pop(1) # removes and returns 2
print(item) # 2
print(my_list) # [1, 3, 4, 5]IndexError avec pop()
Appeler pop() sur une liste vide, ou avec un index hors limites, lève une IndexError :
empty = []
empty.pop() # IndexError: pop from empty list
my_list = [1, 2, 3]
my_list.pop(10) # IndexError: pop index out of rangeL'instruction del
del supprime un élément (ou une tranche d'éléments) d'une liste par position, sans rien retourner.
Supprimer un seul élément par index
Supprimer l'élément à l'index 2
Supprimer une tranche d'éléments
del accepte la même notation de tranche que l'indexation, ce qui permet de supprimer facilement une plage d'éléments en une seule opération :
my_list = [1, 2, 3, 4, 5]
del my_list[1:3] # removes index 1 and 2 (values 2 and 3)
print(my_list) # [1, 4, 5]Supprimer une tranche vide ou hors limites ne lève jamais d'erreur — cela n'a simplement aucun effet.
Supprimer la variable liste entière
del peut aussi supprimer la variable liste elle-même, et pas seulement son contenu :
my_list = [1, 2, 3]
del my_list
# my_list is now undefined; referencing it raises NameErrorLa méthode clear()
list.clear() supprime tous les éléments de la liste, laissant une liste vide. L'objet liste lui-même existe toujours (contrairement à del my_list).
my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list) # []clear() est équivalent à del my_list[:] (suppression de la tranche entière), mais sa lecture est plus claire.
Compréhension de liste pour une suppression conditionnelle
La compréhension de liste construit une nouvelle liste en n'incluant que les éléments qui satisfont une condition, filtrant ainsi ceux que vous souhaitez supprimer. C'est la façon la plus lisible de supprimer tous les éléments correspondant à une condition complexe.
Supprimer toutes les occurrences d'une valeur
Supprimer tous les nombres pairs
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_only = [x for x in numbers if x % 2 != 0]
print(odd_only) # [1, 3, 5, 7]Puisqu'une compréhension retourne une nouvelle liste plutôt que de modifier l'originale, elle est sûre à utiliser lorsque vous avez besoin de conserver l'original inchangé, ou lorsque votre condition de filtre implique plusieurs valeurs à la fois.
Choisir la bonne approche
- Vous connaissez la valeur, pas l'index ? Utilisez
remove()(première correspondance) ou une compréhension de liste (toutes les correspondances ou conditions complexes). - Vous connaissez l'index ? Utilisez
pop(index)si vous avez besoin de récupérer la valeur, oudel list[index]si ce n'est pas le cas. - Besoin de vider toute la liste ? Utilisez
clear(). - Besoin de supprimer une plage d'éléments consécutifs ? Utilisez
del list[start:stop].
Chapitres associés
- Listes Python — créer, indexer et comprendre les bases des listes
- Accéder aux éléments d'une liste — indexation et tranches
- Ajouter des éléments à une liste —
append(),insert(),extend() - Modifier des éléments d'une liste — mettre à jour des valeurs en place
- Compréhension de liste — filtrer et transformer des listes
- Méthodes de liste — référence complète de toutes les méthodes de liste
- Supprimer les doublons d'une liste — dédupliquer une liste
- Trier des listes —
sort()etsorted()