HOWTO · Python

Rimuovi il primo elemento da un elenco in Python

Questo tutorial mostra come rimuovere il primo elemento da un elenco in Python.

In questa pagina

Per rimuovere il primo elemento da una lista Python modificando la lista originale, usa items.pop(0) oppure del items[0]. L’indice 0 indica la prima posizione. Se invece ti serve una lista separata senza quell’elemento, usa items[1:]; usa remove(value) solo quando conosci il valore da rimuovere.

Usa pop(0) per rimuovere il primo elemento sul posto

pop(0) rimuove l’elemento all’indice 0 dalla lista originale e lo restituisce. È utile quando il codice successivo ha bisogno sia del valore rimosso sia della lista aggiornata. Se chiami pop() senza indice, viene rimosso l’ultimo elemento.

Esegui questo esempio:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

items = ["red", "green", "blue"]
removed = items.pop(0)
print(removed)
print(items)

La lista originale viene modificata, quindi anche le altre variabili che fanno riferimento alla stessa lista vedono la rimozione. Quando si rimuove un elemento dall’inizio di una lista Python, gli elementi restanti vengono spostati di una posizione verso l’inizio. Se devi effettuare molte rimozioni successive da sinistra, valuta l’uso di una deque.

Usa del per rimuovere il primo elemento sul posto

Usa del items[0] quando vuoi rimuovere il primo elemento ma non ti serve recuperarne il valore. Modifica la lista originale, come pop(0), ma del è un’istruzione e non restituisce alcun elemento.

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

items = ["red", "green", "blue"]
del items[0]
print(items)

Usa remove() solo per rimuovere in base al valore

items.remove(value) cerca il primo elemento uguale a value e rimuove quella corrispondenza. Non significa «rimuovi l’elemento all’indice 0». Se conosci già il primo valore, passalo direttamente. Se il valore compare più volte, viene rimosso soltanto quello che corrisponde per primo.

Per esempio, se items è ["red", "green", "red"], items.remove("red") lascia ["green", "red"]. Se non conosci il primo valore ma vuoi rimuovere il primo elemento per posizione, usa invece pop(0) oppure del items[0]. Una lista vuota non ha un primo valore da passare a remove().

Usa lo slicing quando ti serve una nuova lista senza il primo elemento

items[1:] crea una nuova lista con tutti gli elementi dall’indice 1 fino alla fine. La lista originale resta invariata. Se vuoi che la variabile faccia riferimento alla lista ottenuta con lo slicing, assegna il risultato nuovamente a items:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

items = ["red", "green", "blue"]
remaining = items[1:]
print(remaining)
print(items)

Lo slice non specifica un indice finale perché, per impostazione predefinita, Python usa la fine della lista. Il risultato è una copia superficiale: la lista esterna è nuova, ma gli eventuali oggetti modificabili al suo interno restano condivisi.

Usa numpy.delete() con un array NumPy

Con un array NumPy monodimensionale, numpy.delete(array, 0) restituisce un nuovo array senza il valore all’indice 0; non modifica l’array di input. Per un array multidimensionale, l’impostazione predefinita axis=None appiattisce l’array prima di eliminare l’elemento. Specifica quindi un asse se vuoi rimuovere una riga o una colonna: per esempio, numpy.delete(array, 0, axis=0) restituisce un nuovo array senza la prima riga. Questa funzione richiede NumPy e opera su array, non è un metodo delle liste Python. Usala quando i dati sono già in un array, invece di convertire una normale lista per una sola rimozione.

Usa deque.popleft() per rimuovere ripetutamente elementi da sinistra

Quando una coda richiede rimozioni ripetute dal lato sinistro, collections.deque mette a disposizione popleft(), che rimuove e restituisce l’elemento più a sinistra. Una deque è progettata per operazioni efficienti a entrambe le estremità, mentre rimuovere il primo elemento da una lista sposta quelli restanti. Per una sola rimozione da una normale lista, pop(0) o del items[0] è più semplice; converti i dati in una deque quando il flusso di lavoro circostante trae vantaggio dalle operazioni di coda.