Vai al contenuto principale

Come usare il metodo pop() in Python

Scopri come usare il metodo pop() di Python per rimuovere elementi da liste e dizionari, incluso come rimuovere elementi durante l'iterazione. Impara a evitare errori comuni come IndexError e KeyError.
Aggiornato 3 giu 2026  · 9 min leggi

Il metodo pop() è una funzione importante in Python usata nella manipolazione dei dati per rimuovere e restituire un elemento specificato da una lista o da un dizionario. Gli sviluppatori Python preferiscono il metodo pop() perché è un modo particolarmente semplice per modificare strutture dati come liste e dizionari.

Prima di entrare nei dettagli, ti consiglio vivamente di seguire il corso Introduction to Python di DataCamp per imparare le basi del linguaggio. Anche la Python Cheat Sheet for Beginners ti aiuterà a consultare e comprendere la sintassi di Python e le sue varie funzioni.

Risposta rapida: come usare il metodo pop() in Python

Il metodo pop() si usa con liste e dizionari per rimuovere elementi specifici e restituirne il valore. Ti mostrerò un esempio rapido per entrambi. Il primo esempio mostra come rimuovere un elemento da una lista usando il metodo pop(). Il codice seguente stampa 5.

# Create a list
my_list = [1, 2, 3, 4, 5]

# Removes and returns the last element of the list
last_element = my_list.pop()
print(last_element)

L'esempio successivo qui sotto mostra come usare il metodo pop() per rimuovere una chiave specifica da un dizionario. Il codice seguente stampa 3.

# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}

# Removes and returns the value associated with the key 'b'
value = my_dict.pop('c')
print(value)

Usare pop() con le liste

Il metodo pop() si usa con le liste per rimuovere e restituire l'elemento specificato da quella lista. La sintassi del metodo pop() con le liste è mostrata di seguito.

list.pop([index])

Quando usi il metodo pop() con le liste, sappi che può accettare un parametro opzionale per specificare l'indice da rimuovere. Se non viene fornito alcun parametro, il metodo pop() rimuove e restituisce l'ultimo elemento della lista.

Se, invece, scegli di specificare esplicitamente l'indice, sappi che in caso di errore verrà generato un IndexError se l'indice specificato è fuori dall'intervallo. Vediamo di seguito i diversi casi d'uso del metodo pop() con le liste.

Usare pop() per rimuovere un elemento per indice

Puoi anche usare un indice positivo o negativo come argomento del metodo pop() per specificare l'elemento da rimuovere dalla lista. In Python, gli indici positivi partono da 0 all'inizio della lista. Gli indici negativi partono da -1 alla fine della lista.

Gli esempi seguenti mostrano questi tre metodi per rimuovere elementi da una lista. In ogni caso, l'output del codice stamperà 5.

# Create a list
my_list = [1, 2, 3, 4, 5]

# Removes and returns the last element of the list
last_element = my_list.pop()
print(last_element)
# Create a list
my_list = [1, 2, 3, 4, 5]

# Remove specific element using negative index
removed_element = my_list.pop(-1) 
print(removed_element)  
# Create  a list
my_list = [1, 2, 3, 4, 5]

# Remove specific element using negative index
removed_element = my_list.pop(4) 
print(removed_element) 

Usare pop() per rimuovere elementi da una lista durante l'iterazione

Puoi usare il metodo pop() in un ciclo per iterare sulla lista e rimuovere ogni volta l'ultimo elemento finché la lista non è vuota. L'esempio seguente mostra come usare il metodo pop() nei cicli. Il codice qui sotto stamperà List is now empty.

# Create a list
my_list = [1, 2, 3, 4, 5]

# Create a function to remove items from the list
while my_list:
    element = my_list.pop()
    print(f"Removed element: {element}")
print("List is now empty:", my_list)

Questa tecnica può essere utile in diversi scenari. Immagina, ad esempio, di avere una lista di attività da gestire una per una. Usando pop(), puoi rimuovere ogni attività quando è completata, mantenendo la tua lista focalizzata su ciò che resta da fare. 

Usare pop() con liste annidate

Puoi usare il metodo pop() per rimuovere elementi da liste annidate. Questo metodo rimuove e restituisce la lista specificata all'interno della lista annidata. Il codice seguente stamperà [7, 8, 9].

# Define a nested list
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Pop an element from the outer list
removed_list = nested_list.pop()
print(removed_list)

Se vuoi rimuovere un elemento specifico dalla lista interna, devi prima specificare l'indice della lista nella lista annidata. Il codice sotto stampa 9, che è l'ultimo elemento della lista all'indice due.

# Define a nested list
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Pop an element from an inner list
removed_element = nested_list[2].pop()
print(removed_element)

Gestire l'errore "pop() index out of range"

Quando provi a rimuovere un elemento da una lista con un indice fuori dall'intervallo della lista stessa, verrà generato un IndexError. Per evitare questo errore, è importante prima controllare la lunghezza della lista e poi fornire l'indice appropriato. Puoi anche usare un blocco try-except per intercettare l'errore. Il codice qui sotto stamperà Index out of range in entrambi i casi.

# Create a list
my_list = [1, 2, 3]

# Check length before popping
index = 4

# Ensure the index is within the valid range of the list
if 0 <= index < len(my_list):
    # Removes and returns the element at the specified index
    element = my_list.pop(index)  
    print(f"Popped element: {element}")
else:
    print("Index out of range")
# Create a list
my_list = [1, 2, 3]

# Using try-except block to handle out-of-range index
try:
    # Attempt to remove and return the element at index 5
    element = my_list.pop(5)
except IndexError:
    # Catches the IndexError if the index is out of range
    print("Index out of range")

Usare pop() con i dizionari

Il metodo pop() si usa con i dizionari per rimuovere una chiave specificata e restituirne il valore. La sintassi del metodo pop() con i dizionari è mostrata di seguito.

dict.pop(key[, default])

Possiamo vedere che il metodo pop(), quando usato con un dizionario, richiede una chiave come parametro. Il metodo pop() restituisce il valore associato alla chiave specificata e rimuove la coppia chiave-valore dal dizionario. 

Puoi anche fornire un valore predefinito opzionale da restituire se la chiave non viene trovata. Se la chiave specificata non viene trovata e non è fornito alcun valore predefinito, viene generato un KeyError. Se viene fornito un valore predefinito, restituirà invece quel valore.

Valore predefinito nei dizionari Python

Quando usi il metodo pop() con i dizionari, puoi fornire il valore predefinito da restituire se la chiave non viene trovata. Questo metodo è solitamente usato per prevenire il KeyError. Il codice qui sotto stampa Not Found poiché la chiave d non è presente nella raccolta.

# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}

# Remove a specific key and provide default value
value = my_dict.pop('d', 'Not Found')

# Prints the returned value
print(value)

Usare il metodo pop() con dizionari annidati

Come per le liste, puoi usare il metodo pop() per rimuovere elementi in dizionari annidati. I dizionari annidati sono dizionari all'interno di dizionari. Il codice seguente stamperà {'x': 7, 'y': 8, 'z': 9}.

# Define a nested dictionary
nested_dict = {
    'a': {'x': 1, 'y': 2, 'z': 3},
    'b': {'x': 4, 'y': 5, 'z': 6},
    'c': {'x': 7, 'y': 8, 'z': 9}
}

# Pop a key-value pair from the outer dictionary
removed_dict = nested_dict.pop('c')
print(removed_dict)

Puoi anche rimuovere un valore interno da un dizionario specifico in dizionari annidati specificandone la chiave. Il codice qui sotto stampa 2.

# Define a nested dictionary
nested_dict = {
    'a': {'x': 1, 'y': 2, 'z': 3},
    'b': {'x': 4, 'y': 5, 'z': 6},
    'c': {'x': 7, 'y': 8, 'z': 9}
}

# Pop a key-value pair from an inner dictionary
popped_inner_value = nested_dict['a'].pop('y')
print(popped_inner_value)

Gestire il KeyError nei dizionari Python

Un altro approccio comune per gestire più elegantemente il KeyError è usare un blocco try-except per intercettare l'errore. L'esempio seguente mostra come usare la tecnica try-except con il metodo pop().

# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}

# Create the try-except block to catch the error
try:
    value = my_dict.pop('d')
except KeyError:
    print("Key not found")

Puoi anche usare la keyword in per verificare se una chiave specifica esiste in un dizionario prima di rimuoverla. Il codice sotto usa questo metodo e restituisce Key not found.

# Create a dictionary
my_dict = {'a': 1, 'b': 2}

# Check key existence before popping
key = 'c'
if key in my_dict:
    value = my_dict.pop(key)
    print(f"Popped value: {value}")
else:
    print("Key not found.")

Considerazioni sulle prestazioni

In questa sezione, daremo un'occhiata alle implicazioni sulle prestazioni dell'uso del metodo pop() con liste e dizionari.

Operazioni sulle liste

La complessità temporale delle operazioni pop() nelle liste dipende dall'indice dell'elemento rimosso. Quando usi il metodo pop() senza argomento o con -1 come indice per rimuovere l'ultimo elemento, opera in tempo O(1) perché rimuove solo l'ultimo elemento della lista senza modificare gli altri.

Quando usiamo il metodo pop() per rimuovere il primo o un qualsiasi altro elemento, funziona in tempo O(n) perché comporta la rimozione di un elemento e lo spostamento degli altri elementi in un nuovo ordine di indici. Dai un'occhiata al nostro tutorial Analyzing Complexity of Code through Python per saperne di più sulla complessità temporale in Python.

Operazioni sui dizionari

Il metodo pop() nei dizionari è altamente efficiente grazie all'implementazione della tabella hash sottostante. In questo scenario, il metodo pop() con i dizionari è generalmente un'operazione O(1).

Questa complessità è dovuta al fatto che il dizionario memorizza le chiavi in una tabella hash e richiede un certo tempo per inserimenti, cancellazioni e ricerche. Nota anche che devi sempre specificare la chiave da rimuovere da un dizionario quando usi il metodo pop(). Consulta il nostro tutorial A Guide to Python Hashmaps per scoprire di più sulle tabelle hash.

Alternative al metodo pop() di Python

Sebbene il metodo pop() sia efficace nel rimuovere elementi da liste e dizionari, esistono alcune alternative.

Usare la keyword del

La keyword del si usa per rimuovere un elemento da una lista specificandone l'indice. La keyword del può anche essere usata per rimuovere coppie chiave-valore specifiche dai dizionari.  Tieni presente che usando la keyword del non viene restituito l'elemento rimosso, a differenza del metodo pop()

Gli esempi seguenti mostrano come usare la keyword del per rimuovere elementi da una lista e da un dizionario. Dopo aver rimosso l'elemento all'indice due, il codice seguente stampa una nuova lista [1, 2, 4, 5].

# Initialize a list with integers from 1 to 5
my_list = [1, 2, 3, 4, 5]

# Remove item at index 2
del my_list[2]
print(my_list)

Il codice seguente stamperà {'a': 1, 'c': 3}.

# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}

# Remove the key 'b' and its associated value from the dictionary
del my_dict['b']
print(my_dict)

Usare il metodo remove()

Il metodo remove() si applica solo a una lista quando vuoi rimuovere un elemento in base al suo valore esatto piuttosto che all'indice. Questo metodo rimuove la prima occorrenza dell'elemento specificato se compare più volte nella lista. Il codice qui sotto stampa [1, 3, 4, 5].

# Initialize a list with integers from 1 to 5
my_list = [1, 2, 3, 4, 5]

# Remove the element with the value 2 from the list
my_list.remove(2)
print(my_list)

Conclusione

Il metodo pop() è una funzionalità particolarmente semplice e versatile in Python, usata per rimuovere elementi da liste e dizionari, con molte applicazioni pratiche nella programmazione. Questo metodo pop() è particolarmente importante quando si gestiscono liste e dizionari, poiché restituisce l'elemento rimosso, che spesso è proprio il comportamento che stai cercando.

Come data analyst, ti consiglio di dare un'occhiata ai percorsi di abilità di DataCamp Python Fundamentals e Python Programming per migliorare le tue competenze in Python per l'analisi dei dati. Ti invito anche a consultare il nostro career track Data Analyst with Python per continuare a costruire competenze pratiche e rilevanti per il lavoro.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Technical writer di Data Science con esperienza pratica in data analytics, business intelligence e data science. Scrivo contenuti pratici e orientati al settore su SQL, Python, Power BI, Databricks e data engineering, basati su lavoro di analytics reale. La mia scrittura unisce profondità tecnica e impatto sul business, aiutando i professionisti a trasformare i dati in decisioni sicure.

Domande frequenti

Cosa fa il metodo pop()?

Il metodo pop() rimuove e restituisce un elemento da liste o dizionari.

Che cos'è IndexError nel metodo pop()?

Un IndexError si verifica quando provi a rimuovere un elemento con un indice fuori dall'intervallo.

Quali sono le alternative al metodo pop()?

I metodi alternativi per rimuovere elementi da liste o dizionari sono il metodo remove() e la keyword del.

Qual è la differenza tra i metodi pop() e remove()?

Il metodo pop() rimuove e restituisce l'elemento specificato per indice da una lista o da un dizionario. Il metodo remove() rimuove un elemento da una lista o da un dizionario in base al suo valore e non restituisce il valore.

Qual è la complessità temporale del metodo pop()?

La complessità temporale predefinita del metodo pop() è O(1), ossia costante ed efficiente.

Il metodo pop() può essere applicato a strutture dati diverse da liste e dizionari in Python?

Sì, il metodo pop() può essere applicato anche a set e bytearray in Python. Per i set, set.pop() rimuove e restituisce un elemento arbitrario, poiché i set non sono ordinati. Per i bytearray, bytearray.pop(index) rimuove e restituisce l'elemento all'indice specificato, in modo simile a come funziona con le liste.

Argomenti

Impara Python con DataCamp

Programma

Programmazione Python

19 h
Migliora le tue abilità di programmazione. Impara a ottimizzare il codice, a scrivere funzioni e test e a utilizzare le migliori tecniche di ingegneria del software.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow