Python offre diversi modi per rimuovere elementi dalle liste: i metodi remove(), pop() e l'operatore del. Ogni approccio ha le sue particularità. La scelta corretta dipende se è necessario rimuovere un elemento per valore, indice, ottenere il valore rimosso o semplicemente rimuovere l'elemento.
La confusione tra remove(), pop() e del porta spesso a errori: una scelta errata del metodo può sollevare un'eccezione o distruggere l'elemento sbagliato. È anche importante sapere cosa succede con il valore restituito e come i vari metodi reagiscono in assenza di un elemento nella lista.
remove(x) rimuove il primo elemento trovato con valore x — solleva l'eccezione ValueError se non esistepop([i]) rimuove e restituisce l'elemento all'indice i (senza indice — l'ultimo elemento). Se l'indice è fuori intervallo — solleva IndexErrordel list[i] rimuove l'elemento all'indice senza restituire un valore. È possibile rimuovere fette (del list[i:j])Esempio di codice:
lst = [10, 20, 30, 20] lst.remove(20) # [10, 30, 20] lst.pop(1) # Rimuove 30, [10, 20] del lst[0] # [20]
Caratteristiche chiave:
Cosa succede se si chiama remove() per un valore che non è nella lista?
Viene sollevato ValueError:
lst = [1, 2] lst.remove(5) # ValueError: list.remove(x): x not in list
Come restituire l'elemento che è appena stato rimosso dalla lista?
Solo pop restituisce l'elemento rimosso.
lst = [7, 8, 9] x = lst.pop() # x = 9
È possibile utilizzare del per rimuovere per valore?
No, del funziona solo con l'indice o la fetta. Per valore si può fare solo tramite remove.
** Casi negativi Un programmatore scrive un ciclo tramite range(len(lst)) e rimuove elementi tramite del — l'indicizzazione si sfalsa, gli elementi vengono saltati. Pro: Diretto e "logico" per un principiante Contro: Facile ottenere un comportamento inatteso — alcuni elementi non vengono rimossi, la lista non funziona come atteso. ** Casi positivi Prima di rimuovere per valore — viene effettuata una verifica, pop viene utilizzato solo se l'indice è garantito, la rimozione per indice viene effettuata in ordine inverso. Pro: Il codice è resistente agli errori, non ci sono salti di elementi Contro: A volte il codice è un po' più lungo, ma è trasparente e sicuro