Modificare gli elementi di una lista
Gli elementi presenti allโinterno di una lista potranno essere modificati dinamicamente; nel prossimo capitolo analizzeremo un costrutto sintattico simile alle liste, le tuple che abbiamo analizzato parzialmente in precedenza; queste ultime funzionano in modo simile alle liste ma hanno la caratteristica di essere immutabili, mentre per quanto riguarda le liste si avrร una maggiore libertร nella manipolazione degli elementi assegnati.
Per modificare un elemento di una lista รจ necessario fare ricorso allโoperatore "=", cioรจ lo stesso che consente di assegnare dei valori alle variabili; si ipotizzi per esempio di voler modificare un elemento, il "6", presente nella seguente lista:
>>> nome_lista = [10, 9, 8, 6]
In questo caso, dato che lโelemento che vogliamo modificare รจ associato allโindice "3", dovremo operare in questo modo:
>>> nome_lista[3] = 7
Fatto ciรฒ dovremmo ottenere una nuova lista formata dai seguenti elementi:
>>> nome_lista
[10, 9, 8, 7]
In sostanza la sintassi per la sostituzione di un elemento in lista prevede lโassegnazione dellโelemento sostitutivo al numero indice della lista da modificare tramite lโoperatore "=". Eโ chiaramente possibile anche lโoperazione che permette di modificare piรน elementi di una lista alla volta, per cui unโistruzione come la seguente applicata alla lista ottenuta in precendenza:
>>> nome_lista[1:4] = [11, 12, 13]
Determinerร la sostituzione degli elementi che vanno dal secondo fino al quarto tra quelli presenti il lista e la lista risultante sarร la seguente:
>>> nome_lista
[10, 11, 12, 13]
Aggiungere elementi ad una lista
Il metodo append() consentirร di inserire un nuovo elemento in lista accodandolo a quelli giร presenti; data lโultima lista ottenuta tramite il precedente esempio, unโistruzione come la seguente:
>>> nome_lista.append.(14)
Porterebbe alla generazione della lista proposta di seguito:
>>> nome_lista
[10, 11, 12, 13, 14]
Nel caso in cui si vogliano invece aggiungere piรน elementi ad una lista con unโunica istruzione, sarร possibile utilizzare un altro metodo, extend():
>>> nome_lista.extend([15, 16, 17, 18])
che nel caso specifico dellโesempio mostrato permetterร di ottenere la lista:.
>>> nome_lista
[10, 11, 12, 13, 14, 15, 16, 17, 18]
Un altro caso interessante riguarda la concatenazione delle liste, operazione per la quale si farร ricorso allโapposito operatore di concatenazione simboleggiato comโรจ noto dal segno "+":
>>> nome_lista
[10, 11, 12, 13, 14, 15, 16, 17, 18]
>>> nome_lista + [19, 20, 21]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
Lโoperatore "*" consentirร invece di definire liste formate da piรน elementi identici tra loro ripetuti un numero di volte pari al valore passato come moltiplicatore nellโistruzione:
>>> [Homer] * 4
['Homer', 'Homer', 'Homer', 'Homer']
Eโ infine da citare il metodo denominato insert() con il quale si potrร aggiungere un elemento ad una lista nella posizione desiderata:
>>> nome_lista = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
>>> nome_lista.insert(0,9)
>>> nome_lista
[9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
In sostanza si tratta di un metodo che accetta due argomenti, il primo รจ il numero indice (nel nostro caso "0") che dovrร essere assegnato al nuovo componente della lista, il secondo ("9" nellโesempio) รจ lโelemento destinato allโinserimento nella lista.
Verificare la presenza di elementi nelle liste
Uno sviluppatore potrebbe voler verificare che un determinato elemento sia effettivamente presente allโinterno di una lista; per questo scopo รจ disponibile la parola chiave in che in sostanza effettuan un confronto di tipo booleano tra il valore passato come argomento e gli elementi presenti in lista. Nel caso in cui il parametro dovesse trovare corrispondenza con un elemento in lista la verifica restituirร TRUE, altrimenti restituirร FALSE:
>>> nome_lista = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
>>> 14 in nome_lista
True # viene restituito "True" perchรฉ l'elemento รจ in lista
>>> 22 in nome_lista
False # viene restituito "False" perchรฉ l'elemento non รจ in lista
Cancellare elementi da una lista
Cosรฌ come รจ possibile inserire nuovi elementi in una lista รจ anche possibile cancellarli utilizzando, in questo caso la parola chiave del; volendo rimuovere un elemento da una lista sarร necessario passare a del lโindice associato ad esso, come nellโesempio seguente dove ad essere eliminato sarร lโelemento con indice "5" (cioรจ quello con valore "15"):
# Cancellazione di un singolo elemento da una lista
>>> nome_lista
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
>>> del nome_lista[5]
>>> nome_lista
[10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21]
Si noti come lโinterprete di Python interverrร per riordinare gli indici della lista, motivo per il quale lโindice utilizzato come identificatore per la cancellazione non andrร perduto ma verrร riassegnato:
>>> nome_lista
[10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21]
>>> nome_lista[5]
16
Nel caso in cui si desideri cancellare simultaneamente piรน elementi sarร necessario specificare lโintervallo allโinterno del quale sono compresi, ad esempio:
# Cancellazione dei valori compresi in un intervallo
>>> nome_lista
[10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21]
>>> del nome_lista[2:6]
>>> nome_lista
[10, 11, 17, 18, 19, 20, 21]
Se si desidera cancellare un elemento specifico senza richiamarlo attraverso il suo indice lo si potrร fare tramite il metodo remove() a cui passare il nome dellโelemento da eliminare:
# Rimozione di un elemento specifico da una lista
>>> nome_lista
[10, 11, 17, 18, 19, 20, 21]
>>> nome_lista.remove(17)
>>> nome_lista
[10, 11, 18, 19, 20, 21]
Per ripulire interamente una lista dal suo contenuto รจ invece disponibile il metodo clear() a cui passare come argomento il nome della lista da "svuotare":
# Rimozione simultanea di tutti gli elementi di una lista
>>> nome_lista
[10, 11, 18, 19, 20, 21]
>>> nome_lista.clear()
>>> nome_lista
[]>
Anche dopo aver perso tutti i suoi elementi la lista continuerร ad esistere come lista vuota, per eliminarla del tutto si dovrร fare ricorso nuovamente ad unโistruzione basata su del:
# Cancellazione definitiva di una lista
>>> del nome_lista
# la chiamata alla lista produrrร un errore
# in quanto la lista non esiste piรน
>>> nome_lista
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'nome_lista' is not defined