Liste Python: Come Aggiungere Elementi a una Lista
Scopri tutti i modi per aggiungere elementi a una lista Python: append, extend, insert, l'operatore + e l'assegnazione per slice, con esempi e insidie spiegate.
Le liste Python sono sequenze mutabili, il che significa che puoi aggiungere, rimuovere e modificare elementi dopo che la lista è stata creata. Questo capitolo illustra tutti i metodi e gli operatori che Python mette a disposizione per inserire nuovi elementi in una lista, spiega quando usare ciascuno e mette in evidenza le insidie più comuni.
Metodi e operatori in sintesi
| Approccio | Aggiunge | Posizione | Modifica in-place? |
|---|---|---|---|
list.append(x) | un elemento | fine | sì |
list.extend(iterable) | tutti gli elementi dall'iterabile | fine | sì |
list.insert(i, x) | un elemento | indice i | sì |
list + other | tutti gli elementi da other | fine | no (restituisce una nuova lista) |
list += other | tutti gli elementi da other | fine | sì |
list[i:i] = items | più elementi | indice i | sì |
Utilizzo di append()
append() aggiunge un singolo elemento alla fine di una lista. Modifica la lista in-place e restituisce sempre None.
append() accetta qualsiasi oggetto Python — string, interi, boolean e persino altre liste:
nums = [1, 2, 3]
nums.append(4)
print(nums) # [1, 2, 3, 4]Insidia: aggiungere una lista la annida
Se si passa una lista ad append(), Python la tratta come un singolo elemento e crea una lista annidata — non unisce le due liste insieme:
fruits = ['apple', 'banana']
fruits.append(['grape', 'kiwi'])
print(fruits) # ['apple', 'banana', ['grape', 'kiwi']]
print(len(fruits)) # 3, not 4Per unire due liste, usa invece extend() o l'operatore + (illustrati di seguito).
Utilizzo di extend()
extend() itera su un iterabile — una lista, una tupla, un insieme o qualsiasi altra sequenza — e aggiunge ciascuno dei suoi elementi alla fine della lista:
append() vs extend() — confronto diretto
a = [1, 2, 3]
a.extend([4, 5])
print(a) # [1, 2, 3, 4, 5]
b = [1, 2, 3]
b.append([4, 5])
print(b) # [1, 2, 3, [4, 5]] ← nested!Insidia: extend() con una string
Le string sono iterabili, quindi extend() aggiungerà ogni carattere come elemento separato:
letters = ['a', 'b']
letters.extend('cd')
print(letters) # ['a', 'b', 'c', 'd']Se vuoi aggiungere l'intera string come un unico elemento, usa invece append().
Utilizzo di insert()
insert(i, x) aggiunge l'elemento x alla posizione i, spostando tutti gli elementi esistenti da quell'indice in poi di una posizione verso destra:
Anteporre un elemento a una lista (aggiungere all'inizio) è un caso d'uso comune:
fruits = ['banana', 'orange']
fruits.insert(0, 'apple')
print(fruits) # ['apple', 'banana', 'orange']Insidia: indice oltre la lunghezza della lista
Se l'indice passato è maggiore della lunghezza attuale della lista, Python non genera un errore — aggiunge semplicemente l'elemento alla fine:
fruits = ['apple', 'banana']
fruits.insert(100, 'orange')
print(fruits) # ['apple', 'banana', 'orange']Funzionano anche gli indici negativi: insert(-1, x) inserisce appena prima dell'ultimo elemento.
Utilizzo dell'operatore +
L'operatore + concatena due liste e restituisce una nuova lista. Nessuna delle liste originali viene modificata:
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(c) # [1, 2, 3, 4, 5, 6]
print(a) # [1, 2, 3] — unchangedUsa + quando hai bisogno di mantenere gli originali intatti, o quando stai costruendo un'espressione di lista anziché mutarne una.
Utilizzo di += (assegnazione aumentata)
L'operatore += è una scorciatoia per extend() — unisce l'iterabile a destra nella lista esistente in-place:
a = [1, 2, 3]
a += [7, 8]
print(a) # [1, 2, 3, 7, 8]A differenza di +, += non crea una nuova lista — aggiorna a in-place, il che è più efficiente in termini di memoria quando si lavora con liste di grandi dimensioni.
Inserire più elementi in una posizione specifica (assegnazione per slice)
Per inserire un blocco di elementi nel mezzo di una lista, l'assegnazione per slice è l'approccio più diretto:
nums = [1, 2, 5, 6]
nums[2:2] = [3, 4] # insert [3, 4] starting at index 2
print(nums) # [1, 2, 3, 4, 5, 6]La sintassi list[i:i] = items apre una finestra di larghezza zero all'indice i e la riempie con gli elementi di items. Nessun elemento esistente viene rimosso.
Scegliere il metodo giusto
- Aggiungere un elemento alla fine: usa
append(). È l'opzione più semplice e rapida per l'inserimento di un singolo elemento. - Unire un'altra lista a questa: usa
extend()o+=. Sono equivalenti;+=è leggermente più idiomatico nei cicli. - Aggiungere un elemento in una posizione specifica: usa
insert(). - Hai bisogno della lista originale intatta: usa l'operatore
+e assegna il risultato a una nuova variabile. - Inserire più elementi nel mezzo: usa l'assegnazione per slice.
Capitoli correlati
- Liste Python — creare liste, indicizzazione e proprietà delle liste
- Accedere agli Elementi della Lista — leggere elementi per indice e slice
- Modificare gli Elementi della Lista — aggiornare elementi esistenti in-place
- Rimuovere Elementi dalla Lista — eliminare elementi con
remove(),pop()edel - Metodi delle Liste — riferimento completo per tutti i metodi built-in delle liste