Supprimer toutes les occurrences d'un élément d'une liste en Python

  1. Utilisez la fonction filter() pour supprimer toutes les instances d’un élément d’une liste en Python
  2. Utilisez la compréhension de liste pour supprimer toutes les instances d’un élément d’une liste en Python
  3. Utilisez la fonction remove() pour supprimer toutes les instances d’un élément d’une liste en Python

Une liste en Python permet de multiples occurrences d’un même élément. Même si la valeur d’un élément peut être la même que les autres, chaque élément aura un index différent. En utilisant ces numéros d’index, vous pouvez facilement accéder aux éléments que vous voulez.

Mais il peut y avoir des situations où vous ne voulez pas de multiples occurrences du même élément ; alors, vous voudrez sûrement supprimer toutes ces occurrences de cet élément particulier d’une liste. En Python, vous pouvez y parvenir de différentes manières.

Utilisez la fonction filter() pour supprimer toutes les instances d’un élément d’une liste en Python

En Python, le filtrage des éléments devient plus facile à l’aide de la fonction filter(). La fonction filter() prend deux arguments, le premier argument est une fonction, et le second argument peut être des ensembles, des listes, des tuples, etc.

Exemple 1 : Fonction filter() avec __ne__

myList = [2, 1, 3, 5, 1, 1, 1, 0]
myList = list(filter((1).__ne__, myList))
print(myList)

Production :

[2, 3, 5, 0]

Dans cet exemple, vous avez une liste myList dans laquelle vous souhaitez supprimer l’occurrence de 1. La fonction filter() prend une autre fonction, __ne__, qui retournera un booléen True ou False selon que la valeur 1 est présente dans la liste myList ou non. Si la valeur 1 est présente à l’intérieur de la liste, elle la rejettera simplement. Ensuite, tout ce qui sera retourné par la fonction filter() sera converti en une liste en utilisant la fonction list().

Exemple 2 : Fonction filter() avec la fonction lambda

myList = [2, 1, 3, 5, 1, 1, 1, 0]
valueToBeRemoved = 1

result = filter(lambda val: val !=  valueToBeRemoved, myList) 
print(list(result)) 

Production :

[2, 3, 5, 0]

Au lieu de passer la fonction __ne__, nous passons une fonction lambda à la fonction filter().

Dans la liste myList, vous prendrez chaque élément un par un et le stockerez dans la variable val. Si les éléments présents à l’intérieur de val et de valueToBeRemoved ne sont pas égaux, seuls ceux présents à l’intérieur de val sont ajoutés à la nouvelle variable result. Vous devez convertir le result en une liste en utilisant la fonction list().

Utilisez la compréhension de liste pour supprimer toutes les instances d’un élément d’une liste en Python

Un List comprehension est un code d’écriture court. La compréhension de liste est plus rapide que les fonctions et les boucles normales.

Exemple de code :

myList = [1, 2, 3, 4, 2, 2, 3]
valueToBeRemoved = 2

myList = [value for value in myList if value != valueToBeRemoved]

print(myList)

Production :

[1, 3, 4, 3]

Vous avez une liste myList dans laquelle vous souhaitez supprimer l’occurrence de l’élément 2. Le code principal pour supprimer toutes les instances d’un élément se trouve entre les crochets []. Ici, la boucle for s’exécutera en premier, puis elle prendra une valeur de la liste myList et la stockera dans la variable value. Après cela, si la valeur à l’intérieur de la variable value et la variable valueToBeRemoved ne correspondent pas, il ne retournera que la valeur de la variable value et la stockera dans la liste myList. Ce processus se poursuivra jusqu’à ce que la liste soit vide. Enfin, vous aurez une liste qui contiendra la sortie souhaitée que vous souhaitez.

Utilisez la fonction remove() pour supprimer toutes les instances d’un élément d’une liste en Python

La fonction remove() ne supprime que la première occurrence de l’élément. Si vous voulez supprimer toutes les occurrences d’un élément en utilisant la fonction remove(), vous pouvez utiliser une boucle soit for loop soit while loop.

myList = [2, 1, 3, 5, 1, 1, 1, 0]
valueToBeRemoved = 1
 
try:
    while True:
        myList.remove(valueToBeRemoved)
except ValueError:
    pass
 
print(myList)

Production :

[2, 3, 5, 0]

Dans le code ci-dessus, vous avez créé une liste myList, puis vous avez une variable valueToBeRemoved, qui contiendra l’élément dont vous souhaitez supprimer l’occurrence de la liste dans ce cas 1. En parcourant la liste en boucle, si cet élément est dans la liste, il sera supprimé de la liste en utilisant la fonction remove().

Article connexe - Python List

  • Comparer des listes en Python
  • Trier une liste par ordre alphabétique en Python