HOWTO · Python
Sostituire un elemento in una lista Python
Scopri come sostituire valori di una lista Python con l’assegnazione tramite indice, un ciclo, una list comprehension o `map()` con una funzione di sostituzione.
In questa pagina
Per sostituire un valore in una lista Python, usa l’assegnazione tramite indice quando ne conosci la posizione. Per sostituire i valori selezionati da una condizione, usa un ciclo con enumerate(), una list comprehension riassegnata alla variabile oppure map() con una funzione di sostituzione. L’assegnazione tramite indice e il ciclo modificano la lista esistente; una comprehension o map() convertito in lista ne crea una nuova.
Sostituire un elemento tramite indice
Gli indici delle liste partono da 0, quindi l’indice 2 indica il terzo elemento. Assegna direttamente il valore sostitutivo a quella posizione:
Esegui questo esempio:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
prices = [12, 18, 25, 31]
prices[2] = 27
print(prices)
Questo aggiorna prices sul posto, quindi anche le altre variabili che fanno riferimento alla stessa lista vedono il cambiamento. Usa questo approccio quando conosci la posizione. Se calcoli un indice a partire da altri dati, verifica che corrisponda a un elemento esistente prima di assegnare.
Sostituire gli elementi corrispondenti con un ciclo
Quando una condizione determina quali valori sostituire, itera sia sulle posizioni sia sui valori con enumerate(). L’indice consente al ciclo di assegnare il nuovo valore nella lista originale:
Esegui questo esempio:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
scores = [62, 85, 62, 91]
for index, score in enumerate(scores):
if score == 62:
scores[index] = 70
print(scores)
Vengono modificati tutti i punteggi che soddisfano la condizione, compresi i duplicati. Il ciclo modifica la stessa lista invece di crearne una nuova. Usalo quando la regola di sostituzione richiede più istruzioni o quando devi aggiornare l’oggetto originale.
Sostituire gli elementi corrispondenti con una list comprehension
Una list comprehension permette di esprimere una sostituzione condizionale in una sola espressione. Se vuoi che la variabile faccia riferimento ai valori aggiornati, assegna di nuovo il risultato alla variabile:
Esegui questo esempio:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
names = ["Ada", "Guest", "Lin", "Guest"]
names = ["Visitor" if name == "Guest" else name for name in names]
print(names)
La comprehension crea una nuova lista; assegnarla a names cambia la lista a cui fa riferimento quella variabile. Qualsiasi altra variabile che faceva riferimento alla lista originale continua invece a riferirsi a quella. Una comprehension senza assegnazione crea un risultato che viene poi scartato, quindi non sostituisce i valori nella lista originale. Questo schema è adatto a una regola breve che produce un valore in uscita per ogni valore in ingresso.
Trasformare gli elementi di una lista con map()
map() applica una funzione a ogni elemento. Se il risultato deve essere una lista, passa i valori trasformati a list():
Esegui questo esempio:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
def replace_guest(name):
return "Visitor" if name == "Guest" else name
names = ["Ada", "Guest", "Lin"]
updated_names = list(map(replace_guest, names))
print(updated_names)
In questo caso, la funzione restituisce un valore sostitutivo per quelli che soddisfano la condizione e lascia invariati gli altri. Convertire il risultato in una lista ne crea una nuova e lascia names invariata. Questo approccio è utile quando la trasformazione usa già una funzione con un nome o può essere riutilizzata altrove; per una regola breve definita sul momento, una comprehension può essere più facile da leggere.
Scegliere l’approccio giusto
Usa l’assegnazione tramite indice per una posizione nota. Usa un ciclo con enumerate() quando una condizione seleziona gli elementi e la lista esistente deve essere modificata. Scegli una list comprehension se vuoi una trasformazione condizionale concisa che produca una nuova lista. Usa map() quando applicare una funzione a ogni valore rende più chiara la trasformazione; converti il risultato in lista se è il formato richiesto dal tuo codice.
Questi approcci differiscono soprattutto per come esprimono la regola e per il fatto che modifichino una lista esistente o ne creino una nuova. Scegli in base ai dati disponibili e a come vuoi che le altre parti del programma vedano eventuali modifiche alla lista originale. Nessuna forma è la scelta migliore per ogni attività di sostituzione.