back to top

Gestione delle liste in Python

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:

Pubblicitร 
>>> 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
Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.
Articolo precedente
Articolo successivo