Che cos'è la differenza tra del, remove e pop su Python Lists

Aliaksei Yursha 25 giugno 2020
  1. Rimozione della lista Python per valore
  2. Elenco Python Rimozione per indice
  3. Rimozione della lista di Python con del
Che cos'è la differenza tra del, remove e pop su Python Lists

Come spesso accade, Python offre diversi mezzi per ottenere la stessa cosa.

Se avete bisogno di cancellare un elemento da una lista, potete usare uno qualsiasi degli elementi
le funzioni list.remove() o list.pop() o l’istruzione del.

Negli esempi che seguono, tratteremo ciascuno di questi approcci e discuteremo le loro differenze e i loro compromessi.

Rimozione della lista Python per valore

list.remove() rimuove il primo elemento della lista, il cui valore è uguale all’argomento passato.
Quando si usa questo metodo, di solito non si sa o non ci si preoccupa di quale sia l’indice dell’elemento da rimuovere.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.remove('Cindy')
>>> names
['Bob', 'Noah']

Fare attenzione quando si usa questo metodo.
Se un elemento che si sta cercando di eliminare non esiste nella lista,
il Python runtime lancerà un ValueError.

>>> names = ['Bob', 'Noah']
>>> names.remove('Cindy')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

Per navigare intorno a questo problema, dovrete controllare se un elemento
esiste nella lista prima di provare a list.remove() it.

>>> names = ['Bob', 'Noah']
>>> if 'Cindy' in names:
...   names.remove('Cindy')
...
>>>

Elenco Python Rimozione per indice

Se si conosce l’indice di un elemento che si vuole rimuovere, si può usare il metodo list.pop().

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.pop(1)
'Cindy'
>>> names
['Bob', 'Noah']

list.pop() rimuove un elemento all’indice specificato e lo restituisce.

Se non si dà alcun indice a list.pop(), esso rimuoverà l’ultimo elemento della lista.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.pop()
'Noah'
>>> names
['Bob', 'Cindy']

Rimozione della lista di Python con del

Un’altra opzione per rimuovere un elemento da una lista per indice è quella di utilizzare l’istruzione del built-in.
A differenza di list.pop() l’istruzione del non restituisce un valore rimosso.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[1]
>>> names
['Bob', 'Noah']

L’istruzione del è anche più flessibile di list.pop().
Si può usare per rimuovere intervalli di valori dalla lista.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[0:2]
>>> names
['Noah']

Si può anche usare per cancellare l’intera lista.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[:]
>>> names
[]

Come si può vedere da quanto sopra, ogni approccio ha casi d’uso leggermente diversi.
Tuttavia, se tutto ciò che serve è rimuovere un singolo elemento dalla lista senza ricordarne il valore, allora uno dei due metodi funzionerà.

Utilizzate quello che si legge meglio nel contesto più ampio del vostro codice.

Articolo correlato - Python List