W3docs

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

ApproccioAggiungePosizioneModifica in-place?
list.append(x)un elementofine
list.extend(iterable)tutti gli elementi dall'iterabilefine
list.insert(i, x)un elementoindice i
list + othertutti gli elementi da otherfineno (restituisce una nuova lista)
list += othertutti gli elementi da otherfine
list[i:i] = itemspiù elementiindice i

Utilizzo di append()

append() aggiunge un singolo elemento alla fine di una lista. Modifica la lista in-place e restituisce sempre None.

python— editable, runs on the server

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 4

Per 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:

python— editable, runs on the server

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:

python— editable, runs on the server

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]  — unchanged

Usa + 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

Esercitazione

Pratica
Quali dei seguenti metodi aggiungono elementi a una lista Python?
Quali dei seguenti metodi aggiungono elementi a una lista Python?
Was this page helpful?