HOWTO · Python
Come aggiungere più elementi a una lista in Python
Scopri quando usare append(), extend(), l’assegnazione a una slice, la concatenazione di liste o itertools.chain per aggiungere valori a una lista Python.
In questa pagina
Per aggiungere a una lista Python esistente i valori di un iterabile, usa il metodo extend(). Modifica la lista direttamente. Il metodo append() aggiunge un oggetto per chiamata, mentre + e itertools.chain seguito da list() creano una nuova lista. L’assegnazione a una slice permette di inserire valori in una posizione specifica.
Scegli in base al fatto che tu voglia modificare una lista, alla posizione in cui devono comparire i nuovi valori e alla necessità di ottenere un nuovo risultato. Gli esempi seguenti mostrano il comportamento di ciascuna opzione.
Aggiungere un elemento con append()
append() è un metodo delle liste che aggiunge il proprio argomento come singolo oggetto alla fine della lista. Se l’argomento è a sua volta una lista, questa resta un unico elemento annidato. Chiamando append() più volte, ogni chiamata aggiunge un oggetto.
Esegui questo esempio:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
values = ["red", "blue"]
values.append("green")
print(values)
Per aggiungere più valori separati, potresti chiamare append() una volta per ciascun valore. Se hai un iterabile di valori, di solito è più diretto usare extend().
Aggiungere più elementi con extend()
extend() consuma un iterabile e aggiunge alla lista esistente ogni valore che produce. La lista viene modificata e il metodo restituisce None; continua quindi a usare la variabile della lista originale invece di assegnarle il valore restituito dal metodo.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
colors = ["red", "blue"]
colors.extend(["green", "yellow"])
print(colors)
Funziona anche con altri iterabili, come una tupla o una stringa. Una stringa produce un carattere alla volta, quindi estenderla con "hi" aggiunge separatamente "h" e "i". Usa append() quando vuoi conservare l’iterabile come un unico oggetto.
Inserire più elementi con l’assegnazione a una slice
L’assegnazione a una slice sostituisce la parte selezionata di una lista con i valori di un iterabile. Una slice vuota non seleziona alcun valore esistente: assegnarle dei valori li inserisce e lascia invariato il resto della lista. L’indice determina la posizione in cui compaiono.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
items = ["a", "d"]
items[1:1] = ["b", "c"]
print(items)
Qui la slice inizia e termina all’indice 1, quindi entrambi i nuovi valori vengono inseriti prima del valore originale "d". Una slice non vuota sostituisce invece i valori selezionati: controlla i limiti della slice se vuoi inserire valori anziché sostituirli.
Combinare liste con +
L’operatore + concatena le liste e restituisce una nuova lista. Non modifica nessuno dei due operandi, il che è utile quando vuoi mantenere inalterate le liste originali.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
first = [1, 2]
second = [3, 4]
combined = first + second
print(combined)
Per concatenare due liste, entrambi gli operandi devono essere liste. Se vuoi aggiungere valori a una lista esistente, usa extend() invece di creare e assegnare il risultato della concatenazione.
Creare una lista da iterabili con itertools.chain
itertools.chain produce un iteratore che restituisce, nell’ordine, i valori degli iterabili ricevuti in input. Racchiudilo in list() quando vuoi materializzare quei valori in una nuova lista. È utile quando gli input sono già iterabili o quando vuoi iterare su più sorgenti; non modifica tali sorgenti. Le prestazioni dipendono dal lavoro svolto e dai dati, quindi non c’è un vantaggio universale in termini di efficienza rispetto alle altre opzioni.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
from itertools import chain
numbers = [1, 2]
more_numbers = (3, 4)
combined = list(chain(numbers, more_numbers))
print(combined)
Puoi anche consumare direttamente l’iteratore in un ciclo, senza creare una lista. Materializzalo solo quando ti serve ottenere una lista.
Scegliere l’approccio giusto
- Usa
append()per aggiungere un singolo oggetto, oppure chiamalo più volte se gestisci i valori uno per volta. - Usa
extend()per aggiungere a una lista esistente tutti i valori di un iterabile. - Usa l’assegnazione a una slice per inserire i valori di un iterabile in una posizione specifica; una slice vuota li inserisce senza sostituire i valori esistenti.
- Usa
+per creare una nuova lista a partire da due liste, mantenendo inalterati gli input. - Usa
list(itertools.chain(...))per creare una nuova lista con i valori prodotti da più iterabili. Omettilist()se ti basta un iteratore.
Per il caso comune in cui vuoi aggiungere più valori a una lista che hai già, inizia con extend(). Scegli un’alternativa se devi inserire i valori a un indice specifico, ottenere una lista concatenata separata o iterare su più sorgenti.