W3docs

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 / instructionSupprime parRetourne l'élément supprimé ?Erreur si la cible est absente ?
list.remove(value)Première valeur correspondanteNonValueError
list.pop()Dernier élément (par défaut)OuiIndexError sur liste vide
list.pop(index)Élément à l'indexOuiIndexError si hors limites
del list[index]Élément à l'indexNonIndexError si hors limites
del list[start:stop]Tranche d'élémentsNonJamais (tranche vide acceptée)
list.clear()Tous les élémentsNonJamais
Compréhension de listeÉléments correspondant à une conditionNon (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

python— editable, runs on the server

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

python— editable, runs on the server

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 list

Supprimer 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

python— editable, runs on the server

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

python— editable, runs on the server

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 range

L'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

python— editable, runs on the server

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 NameError

La 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

python— editable, runs on the server

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, ou del 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

Pratique

Pratique
Laquelle des options suivantes peut être utilisée pour supprimer des éléments d'une liste Python ?
Laquelle des options suivantes peut être utilisée pour supprimer des éléments d'une liste Python ?
Was this page helpful?