W3docs

Modificare gli Elementi di una Lista

Impara a modificare gli elementi di una lista Python con assegnazione per indice, slicing, append(), insert(), extend() e list comprehension.

Le liste Python sono mutabili, il che significa che puoi modificarne il contenuto dopo che sono state create. Questo capitolo illustra ogni tecnica pratica per modificare gli elementi di una lista: assegnazione diretta tramite indice, sostituzione tramite slice, append(), insert(), extend() e list comprehension. Capire quando usare ciascun approccio è fondamentale per scrivere codice Python pulito ed efficiente.

Modificare un singolo elemento tramite indice

Il modo più diretto per cambiare un elemento è assegnare un nuovo valore alla sua posizione di indice. Gli indici delle liste partono da 0.

fruits = ["apple", "banana", "cherry"]
fruits[1] = "mango"
print(fruits)

Output:

['apple', 'mango', 'cherry']

L'indicizzazione negativa conta dalla fine della lista. L'indice -1 corrisponde all'ultimo elemento, -2 al penultimo, e così via.

colors = ["red", "green", "blue"]
colors[-1] = "yellow"
print(colors)

Output:

['red', 'green', 'yellow']

Se tenti di assegnare un valore a un indice che non esiste, Python solleva un IndexError. Usa i pattern di accesso alle liste o len() per restare nei limiti.

Sostituire un intervallo di elementi tramite slicing

L'assegnazione tramite slice sostituisce una sezione contigua di una lista con un'altra lista. Lo slice my_list[start:end] seleziona gli elementi dall'indice start fino a (ma non incluso) l'indice end.

python— editable, runs on the server

Output:

[1, 20, 30, 5]

Nota che la lista di sostituzione non deve avere la stessa lunghezza dello slice. In questo caso, tre elementi (2, 3, 4) sono stati sostituiti con due elementi (20, 30), riducendo la lista di uno.

Puoi anche inserire elementi senza rimuoverne alcuno usando uno slice vuoto:

letters = ["a", "b", "e"]
letters[2:2] = ["c", "d"]
print(letters)

Output:

['a', 'b', 'c', 'd', 'e']

append() — aggiungere un elemento alla fine

Il metodo append() aggiunge un singolo elemento alla fine di una lista e modifica la lista in place. Aggiunge sempre esattamente un elemento, anche se quell'elemento è a sua volta una lista.

python— editable, runs on the server

Output:

[1, 2, 3, 4, 5]

Aggiungere una lista come singolo elemento la annida invece di unirla:

my_list = [1, 2, 3]
my_list.append([4, 5])
print(my_list)

Output:

[1, 2, 3, [4, 5]]

Usa extend() quando vuoi invece unire tutti gli elementi di un'altra lista.

insert() — aggiungere un elemento in una posizione specifica

Il metodo insert() inserisce un nuovo elemento a un determinato indice, spostando tutti gli elementi successivi di una posizione verso destra.

python— editable, runs on the server

Output:

[1, 2, 99, 3, 4]

insert() non solleva mai un IndexError per posizioni fuori dall'intervallo. Se si passa un indice maggiore della lunghezza della lista, l'elemento viene aggiunto in fondo. Se si passa un indice negativo oltre l'inizio, viene aggiunto all'inizio.

extend() — unire un altro iterabile alla lista

Il metodo extend() aggiunge ogni elemento di un iterabile (lista, tupla, string, ecc.) alla fine della lista. La lista originale cresce in place.

python— editable, runs on the server

Output:

[1, 2, 3, 4, 5, 6, 7]

extend() vs append() a colpo d'occhio:

MetodoCosa aggiungeRisultato per [1,2] + [3,4]
append([3,4])Un elemento (una lista annidata)[1, 2, [3, 4]]
extend([3,4])Ogni elemento singolarmente[1, 2, 3, 4]

List comprehension — trasformare elementi in una nuova lista

La list comprehension crea una nuova lista applicando un'espressione a ogni elemento (con un filtro opzionale). Dopo la comprehension, si riassegna la variabile — la lista originale non viene mutata in place.

python— editable, runs on the server

Output:

[4, 8, 12]

Puoi anche trasformare ogni elemento senza filtrare:

prices = [10.0, 25.5, 8.75]
discounted = [round(p * 0.9, 2) for p in prices]
print(discounted)

Output:

[9.0, 22.95, 7.88]

Usa la list comprehension quando vuoi un'istruzione compatta e leggibile per produrre una copia modificata di una lista.

Scegliere l'approccio giusto

ObiettivoMetodo migliore
Modificare un elemento in una posizione notaAssegnazione per indice list[i] = value
Sostituire un intervallo di elementiAssegnazione tramite slice list[a:b] = new_items
Aggiungere un elemento alla fineappend()
Aggiungere un elemento in una posizione specificainsert(index, value)
Unire tutti gli elementi di un altro iterabileextend()
Produrre una copia modificata in base a una regolaList comprehension

Per rimuovere elementi da una lista, vedi Rimuovere Elementi da una Lista. Per ordinare una lista in place, vedi Ordinare le Liste. Per un riferimento completo di tutti i metodi delle liste, vedi Metodi delle Liste.

Esercitati

Pratica
In Python, how can we change items in a list?
In Python, how can we change items in a list?
Was this page helpful?