Articolo originale: Python List .remove() - How to Remove an Item from a List in Python

In questo articolo imparerai come usare il metodo integrato delle liste di Python remove().

Alla fine, saprai come usare remove() per rimuovere un elemento da una lista di Python.

Ecco di che cosa parleremo:

  1. Sintassi del metodo remove()
  2. Rimuovere un elemento da lista usando remove()
  3. remove() rimuove solo la prima occorrenza di un elemento
    1. Come rimuovere tutte le occorrenze di elemento

Il Metodo remove() - Una Panoramica della Sintassi

Il metodo remove() è uno dei modi per rimuovere elementi da una lista in Python.

Il metodo remove() rimuove un elemento da una lista tramite il suo valore e non tramite il suo indice.

La sintassi generica del metodo remove() è la seguente:

nome_lista.remove(valore)

Vediamola nel dettaglio:

  • nome_lista è il nome della lista con cui stai lavorando.
  • remove() è uno dei metodi integrati di Python.
  • remove()  prende un solo argomento obbligatorio. Se non lo inserisci, otterrai un TypeError – nello specifico, otterrai il seguente errore: TypeError: list.remove() takes exactly one argument (0 given).
  • valore è lo specifico valore dell'elemento che vuoi rimuovere da nome_lista.

Il metodo remove() non restituisce il valore che è stato rimosso, ma restituisce None, il che vuol dire che non c'è alcun valore di ritorno.

Se hai bisogno di rimuovere un elemento attraverso il suo numero di indice e/o per qualche ragione vuoi restituire (salvare) il valore che hai rimosso, puoi usare il metodo pop().

Come Rimuovere un Elemento da una Lista Usando il Metodo remove() in Python

Per rimuovere un elemento da una lista usando il metodo remove(), specifica il valore di quell'elemento e passalo come argomento al metodo.

remove() lo cercherà nella lista per trovarlo e rimuoverlo.

#lista originale
programming_languages = ["JavaScript", "Python", "Java", "C++"]

#visualizza la lista originale
print(programming_languages)

# rimuovi il valore 'JavaScript' dalla lista
programming_languages.remove("JavaScript")

#visualizza la lista aggiornata
print(programming_languages)

#output

#['JavaScript', 'Python', 'Java', 'C++']
#['Python', 'Java', 'C++']

Se specifichi un valore che non è contenuto nella lista, otterrai un errore - nello specifico l'errore sarà un ValueError:

programming_languages = ["JavaScript", "Python", "Java", "C++"]

#Voglio rimuovere il valore 'React'
programming_languages.remove("React")

#visualizza la lista
print(programming_languages)

#output

# line 5, in <module>
#programming_languages.remove("React")
#ValueError: list.remove(x): x not in list

Per evitare di incombere in questo errore, potresti controllare che il valore che vuoi rimuovere sia nella lista sin dal principio, usando la parola chiave in.

Restituirà un valore Booleano – True se l'elemento è nella lista o False se il valore non è nella lista.

programming_languages = ["JavaScript", "Python", "Java", "C++"]

#controlla se 'React' è nella lista 'programming_languages'
print("React" in programming_languages)

#output
#False

Un altro modo per evitare questo errore è creare una condizione che dica, essenzialmente, "Se questo valore fa parte della lista, allora cancellalo. Se non esiste, mostra un messaggio che dica che non è contenuto nella lista".

programming_languages = ["JavaScript", "Python", "Java", "C++"]

if "React" in programming_languages:
    programming_languages.remove("React")
else:
    print("Questo valore non esiste")
    
#output
#Questo valore non esiste

Ora, invece di ottenere un errore di Python quando provi a cancellare un determinato valore che non esiste, ti viene restituito un messaggio che dice che l'elemento che vuoi cancellare non si trova nella lista con cui stai lavorando.

Il Metodo remove() Rimuove la Prima Occorrenza dell'Elemento nella Lista

Una cosa da tenere a mente quando usiamo il metodo remove() è che cercherà e rimuoverà la prima occorrenza dell'elemento.

Ciò significa che se nella lista c'è più di un'istanza dell'elemento il cui valore hai passato come argomento al metodo, allora solo la prima occorrenza verrà rimossa.

Diamo un'occhiata al seguente esempio:

programming_languages = ["JavaScript", "Python", "Java", "Python", "C++", "Python"]

programming_languages.remove("Python")

print(programming_languages)

#output
#['JavaScript', 'Java', 'Python', 'C++', 'Python']

Nell'esempio in alto, l'elemento con il valore di Python compariva tre volte nella lista.

Quando remove() è stato usato, solo la prima corrispondenza è stata rimossa – quella che segue il valore JavaScript e precede il valore Java.

Le altre due occorrenze di Python rimangono nella lista.

Cosa succede, però, quando si vogliono rimuovere tutte le occorrenze di un elemento?

Usando soltanto remove() non si può ottenere questo risultato, e potresti non voler rimuovere solo la prima istanza dell'elemento che hai specificato.

Come Rimuovere Tutte le Istanze di un Elemento in una Lista in Python

Uno dei modi per rimuovere tutte le occorrenze di un elemento all'interno di una lista è usare una comprensione di lista.

Una comprensione di lista crea una nuova lista da una lista esistente, o crea quella che viene chiamata una sotto-lista.

Ciò non andrà a modificare la lista originale, ma creerà invece una nuova lista che soddisfa le condizioni che hai stabilito.

#lista originale
programming_languages = ["JavaScript", "Python", "Java", "Python", "C++", "Python"]

#sotto-lista creata con la comprensione di lista
programming_languages_updated = [value for value in programming_languages if value != "Python"]


#visualizza la lista originale
print(programming_languages)

#visualizza la nuova sotto-lista che non contiene 'Python'
print(programming_languages_updated)

#output

#['JavaScript', 'Python', 'Java', 'Python', 'C++', 'Python']
#['JavaScript', 'Java', 'C++']

Nell'esempio in alto, c'è la lista originale programming_languages.

Poi, una nuova lista (o sotto-lista) viene restituita.

Gli elementi contenuti nella sotto-lista devono soddisfare un requisito, e cioè: se un elemento della lista originale ha il valore di Python, allora non farà parte della sotto-lista.

Ora, se non vuoi creare una nuova lista ma modificare quella già esistente in loco, allora puoi usare l'assegnazione di intervallo combinata con una comprensione di lista.

Con l'assegnazione di intervallo puoi modificare e sostituire alcune parti (o intervalli) della lista.

Per sostituire la lista intera, usa la sintassi [:] dello slicing, insieme alla comprensione di lista.

La comprensione di lista stabilisce la condizione secondo cui ogni elemento con valore di Python non farà più parte della lista.

programming_languages = ["JavaScript", "Python", "Java", "Python", "C++", "Python"]

programming_languages[:] = (value for value in programming_languages if value != "Python")

print(programming_languages)

#output

#['JavaScript', 'Java', 'C++']

Conclusione

Ecco fatto! Ora sai come rimuovere un elemento da una lista di Python usando il metodo remove(). Hai anche visto anche alcuni modi per rimuovere tutte le occorrenze di un elemento da una lista di Python.

Spero che tu abbia trovato utile questo articolo.

Per saperne di più sul linguaggio di programmazione Python, dai un'occhiata alla Certificazione di Calcolo Scientifico con Python di freeCodeCamp.

Inizierai dalle basi e imparerai in modo interattivo, semplice e intuitivo. Inoltre, alla fine del corso lavorerai a cinque progetti per mettere in pratica e consolidare ciò che hai imparato.

Grazie per aver letto e buona programmazione 😊 !