Rimuovi tutte le occorrenze di un elemento da una lista in Python

Sahil Bhosale 11 dicembre 2023
  1. Usa la funzione filter() per rimuovere tutte le istanze di un elemento da una lista in Python
  2. Usa la comprensione della lista per rimuovere tutte le istanze di un elemento da una lista in Python
  3. Usa la funzione remove() per rimuovere tutte le istanze di un elemento da una lista in Python
Rimuovi tutte le occorrenze di un elemento da una lista in Python

Una lista in Python consente più occorrenze dello stesso elemento. Anche se il valore di un elemento può essere lo stesso di altri, ogni elemento avrà un indice diverso. Usando questi numeri indice, puoi accedere facilmente a qualsiasi elemento tu voglia.

Ma potrebbero esserci alcune situazioni in cui non desideri più istanze dello stesso elemento; quindi, vorrai sicuramente rimuovere tutte quelle occorrenze di quel particolare elemento da una lista. In Python, ci sono diversi modi per ottenere questo risultato.

Usa la funzione filter() per rimuovere tutte le istanze di un elemento da una lista in Python

In Python, filtrare gli elementi diventa più facile con l’aiuto della funzione filter(). La funzione filter() accetta due argomenti, il primo argomento è una funzione e il secondo argomento può essere insiemi, liste, tuple, ecc.

Esempio 1: Funzione filter() con __ne__

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

Produzione:

[2, 3, 5, 0]

In questo esempio, hai una lista myList da cui desideri rimuovere l’occorrenza di 1. La funzione filter() accetta un’altra funzione, __ne__, che restituirà un bool True o False a seconda che il valore 1 sia presente o meno all’interno della lista myList. Se il valore 1 è presente all’interno dell’lista, lo scarterà semplicemente. Quindi tutto ciò che verrà restituito dalla funzione filter() sarà convertito in una lista usando la funzione list().

Esempio 2: Funzione filter() Con funzione lambda

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

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

Produzione:

[2, 3, 5, 0]

Invece di passare la funzione __ne__, passiamo una funzione lambda alla funzione filter().

Dalla lista myList prenderete ogni elemento uno per uno e lo memorizzerete all’interno della variabile val. Se gli elementi presenti all’interno sia di val che di valueToBeRemoved non sono uguali, alla nuova variabile result vengono aggiunti solo quelli presenti all’interno di val. Dovresti convertire il result in una lista usando la funzione list().

Usa la comprensione della lista per rimuovere tutte le istanze di un elemento da una lista in Python

Una List comprehension è un modo breve per scrivere codice. La comprensione delle liste è più veloce delle normali funzioni e cicli.

Codice di esempio:

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

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

print(myList)

Produzione:

[1, 3, 4, 3]

Hai una lista myList da cui vuoi rimuovere l’occorrenza dell’elemento 2. Il codice principale per rimuovere tutte le istanze di un elemento risiede all’interno delle parentesi quadre []. Qui, il cicli for verrà eseguito per primo, quindi prenderà un valore dalla lista myList e lo memorizzerà all’interno della variabile value. Dopodiché, se il valore all’interno della variabile value e la variabile valueToBeRemoved non corrispondono, restituirà solo il valore della variabile value e lo memorizzerà nella List myList. Questo processo continuerà fino a quando l’lista non sarà vuoto. Infine, avrai una lista che conterrà l’output desiderato che desideri.

Usa la funzione remove() per rimuovere tutte le istanze di un elemento da una lista in Python

La funzione remove() rimuove solo la prima occorrenza dell’elemento. Se vuoi rimuovere tutte le occorrenze di un elemento usando la funzione remove(), puoi usare un loop sia for loop o while.

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

try:
    while True:
        myList.remove(valueToBeRemoved)
except ValueError:
    pass

print(myList)

Produzione:

[2, 3, 5, 0]

Nel codice sopra, hai creato una lista myList, e poi hai una variabile valueToBeRemoved, che conterrà l’elemento di cui vuoi rimuovere l’occorrenza dall’lista in questo caso 1. Durante il bucle della lista, se quell’elemento è all’interno della lista, sarà rimosso dalla lista usando la funzione remove().

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

Articolo correlato - Python List