Python >> Tutoriel Python >  >> Python

Comment supprimer un élément de liste par valeur en Python ?

Formulation du problème

Étant donné une liste Python et un élément (valeur). Comment supprimer l'élément (valeur) de la liste donnée ?

Voici un exemple de ce que vous souhaitez accomplir :

  • Étant donné :
    • Liste [1, 2, 99, 4, 99]
    • Élément 99
  • Retour :
    • Liste [1, 2, 4, 99]

Une alternative renverrait la liste avec l'élément (valeur) 99 supprimé dans toutes les occurrences :

  • Retour :
    • Liste [1, 2, 4]

Nous allons d'abord examiner la première variante du problème dans la Méthode 1 puis examinez la seconde dans la Méthode 2 .

Méthode 1 :list.remove()

Le list.remove(element) la méthode supprime la première occurrence du element à partir d'un list existant . Cependant, cela ne supprime pas toutes les occurrences de l'élément dans la liste !

Voici un court exemple :

>>> lst = [1, 2, 99, 4, 99]
>>> lst.remove(99)
>>> lst
[1, 2, 4, 99]

Dans la première ligne de l'exemple, vous créez la liste lst . Vous supprimez ensuite l'élément entier 99 de la liste, mais uniquement sa première occurrence. Le résultat est la liste avec seulement quatre éléments [1, 2, 4, 99] .

Syntaxe :

Vous pouvez appeler cette méthode sur chaque objet de liste en Python. Voici la syntaxe :

list.remove(element)

Arguments :

Argument Description
element Objet que vous souhaitez supprimer de la liste. Seule la première occurrence de l'élément est supprimée.

Valeur de retour :

La méthode list.remove(element) a la valeur de retour None . Il fonctionne sur une liste existante et, par conséquent, ne renvoie pas une nouvelle liste avec l'élément supprimé

Vidéo :

Vous pouvez également consulter notre tutoriel de blog complet sur le Python list.remove() méthode.

L'élément supprimé n'existe pas

Regardons un autre exemple où cela échoue ensuite !

Pour supprimer un élément de la liste, utilisez le list.remove(element) méthode que vous avez déjà vue précédemment :

>>> lst = ["Alice", 3, "alice", "Ann", 42]
>>> lst.remove("Ann")
>>> lst
['Alice', 3, 'alice', 42]

La méthode va de gauche à droite et supprime la première occurrence de l'élément qui est égale à celle à supprimer.

Si vous essayez de supprimer l'élément x de la liste mais x n'existe pas dans la liste, Python lève un ValueError :

>>> lst = ['Alice', 'Bob', 'Ann']
>>> lst.remove('Frank')
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    lst.remove('Frank')
ValueError: list.remove(x): x not in list

Pour résoudre ce problème, vous pouvez l'inclure dans un environnement try/except comme ceci :

lst = ['Alice', 'Bob', 'Ann']
try:
    lst.remove('Frank')
except:
    pass

print('done!')

Ce code passe et renvoie 'done!' sans aucun message d'erreur.

Méthode 2 :Python List remove() All

Le list.remove(x) la méthode supprime uniquement la première occurrence de l'élément x de la liste.

Mais que se passe-t-il si vous souhaitez supprimer toutes les occurrences de l'élément x d'une liste donnée ?

La réponse est d'utiliser une simple boucle :

lst = ['Ann', 'Ann', 'Ann', 'Alice', 'Ann', 'Bob']
x = 'Ann'

while x in lst:
    lst.remove(x)

print(lst)
# ['Alice', 'Bob']

Vous appelez simplement le remove() méthode encore et encore jusqu'à l'élément x n'est plus dans la liste.

Pour plus de clarté, je veux vous montrer une méthode qui n'est pas optimale, mais qui est recommandée partout sur le Web (par exemple, ici).

Méthode 3 :Compréhension de liste :supprimer des éléments sous condition

Utiliser la compréhension de liste est de la triche car cette méthode ne supprime pas vraiment les éléments d'un objet de liste. Il crée simplement une nouvelle liste avec certains éléments qui répondent à votre condition.


List comprehension est une manière compacte de créer des listes. La formule simple est :

[ expression + context ]

  • Expression : Que faire de chaque élément de la liste ?
  • Contexte : Quels éléments de liste sélectionner ? Il se compose d'un nombre arbitraire d'instructions for et if.

L'exemple [x for x in range(3)] crée la liste [0, 1, 2] .


Vous pouvez également définir une condition telle que "toutes les valeurs différentes d'un élément donné 1" , par exemple, x!=1 , dans la partie contexte en utilisant un if condition.

Cela nous amène à un moyen de supprimer tous les éléments qui sont égaux à une certaine valeur telle que notre valeur 99 dans une liste donnée.

>>> lst = [1, 2, 99, 4, 99]
>>> lst_new = [x for x in lst if x != 99]
>>> lst_new
[1, 2, 4]

Pendant que vous parcourez toute la liste lst , vous n'incluez que les éléments qui ne sont pas égaux à l'élément 99 . Ainsi, la liste résultante a tous les éléments 99 supprimé.

Cependant, la liste d'origine lst n'a pas changé !

>>> lst
[1, 2, 99, 4, 99]

Articles de blog associés :

  • Consultez mon didacticiel de compréhension de liste complète pour un apprentissage maximal !