Metodi per le Liste in Python
In questa lezione studieremo alcuni dei metodi più utili per modificare le liste in Python. Attraverso tali metodi è possibile modificare le liste in place, ossia senza la necessità di dover creare nuove liste.
Vedremo come aggiungere uno o più elementi, rimuovere o inserire elementi in una lista.
Aggiungere un elemento ad una lista: append
Nella lezione sulle operazioni base per le liste abbiamo visto come aggiungere un elemento ad una lista usando l'operatore di concatenazione +
. In pratica, abbiamo creato una nuova lista che era la concatenazione della lista originale con un nuovo elemento.
>>> lista = [1, 2, 3, 4, 5]
>>> nuova_lista = lista + [6]
>>> nuova_lista
[1, 2, 3, 4, 5, 6]
Il problema di questo approccio è che viene creata una nuova lista composta da tutti gli elementi della lista originale e dal nuovo elemento. Questo comportamento è spesso sconveniente, in quanto la lista originale potrebbe essere composta da molti elementi, per cui usare la concatenazione risulta essere un'operazione costosa.
Per tal motivo, esiste un metodo che permette di aggiungere un elemento ad una lista senza crearne una nuova. Il metodo si chiama append
e la sintassi è la seguente:
lista.append(elemento)
Il metodo append
non restituisce alcun valore, ma modifica la lista originale aggiungendo l'elemento alla fine della lista.
>>> lista = [1, 2, 3, 4, 5]
>>> lista.append(6)
>>> lista
[1, 2, 3, 4, 5, 6]
Il metodo append
risulta essere molto più efficiente della concatenazione.
Metodo append
per le Liste
Il metodo append
permette di aggiungere un elemento alla fine di una lista. La sintassi è la seguente:
lista.append(elemento)
Estendere una lista: extend
Il metodo append
permette di aggiungere un elemento alla fine di una lista. Se volessimo aggiungere più elementi alla lista, dovremmo usare il metodo append
più volte, come nell'esempio seguente:
>>> lista = [1, 2, 3, 4, 5]
>>> lista.append(6)
>>> lista.append(7)
>>> lista.append(8)
>>> lista
[1, 2, 3, 4, 5, 6, 7, 8]
Purtroppo non possiamo usare il metodo append
per aggiungere più elementi alla lista, in quanto questo metodo accetta come argomento solo un elemento. Infatti, se provassimo a passare una lista come argomento di append
otteniamo un risultato inaspettato:
>>> lista = [1, 2, 3, 4, 5]
>>> lista.append([6, 7, 8])
>>> lista
[1, 2, 3, 4, 5, [6, 7, 8]]
Quello che è accaduto è che il metodo append
ha aggiunto alla lista l'intera lista passata come argomento. Il risultato è che la lista originale contiene un solo elemento in più e non 3, come ci aspettavamo.
>>> len(lista)
6
Piuttosto che usare il metodo append
più volte, possiamo usare il metodo extend
per aggiungere più elementi alla lista. Il metodo extend
accetta come argomento una lista di elementi da aggiungere alla lista originale.
>>> lista = [1, 2, 3, 4, 5]
>>> lista.extend([6, 7, 8])
>>> lista
[1, 2, 3, 4, 5, 6, 7, 8]
Metodo extend
per le Liste
Il metodo extend
permette di aggiungere più elementi alla fine di una lista. La sintassi è la seguente:
lista.extend([elemento1, elemento2, ...])
In generale il metodo extend
accetta come argomento un oggetto iterabile, di cui prende gli elementi per estendere la lista:
lista.extend(iterabile)
In realtà, il metodo extend
si aspetta in input un oggetto iterabile, o meglio un contenitore iterabile, di cui prende gli elementi per estendere la lista. Vedremo nel dettaglio il concetto di contenitore iterabile in un'altra lezione. Per il momento, basta sapere che un contenitore iterabile è un oggetto che può essere usato in un ciclo for
per iterare sui suoi elementi, come ad esempio il risultato di range
:
>>> lista = [1, 2, 3, 4, 5]
>>> lista.extend(range(6, 9))
>>> lista
[1, 2, 3, 4, 5, 6, 7, 8]
Inserire un elemento in una lista: insert
Il metodo append
permette di aggiungere un elemento alla fine di una lista. Il metodo extend
permette di aggiungere più elementi alla fine di una lista. Per poter aggiungere un oggetto in una posizione arbitraria della lista, possiamo usare il metodo insert
.
Il metodo insert
accetta due argomenti: l'indice della posizione in cui inserire l'elemento e l'elemento da inserire.
lista.insert(indice, elemento)
Il metodo insert
non restituisce alcun valore, ma modifica la lista originale aggiungendo l'elemento alla posizione indicata.
>>> lista = [1, 2, 3, 4, 5]
>>> lista.insert(2, 6)
>>> lista
[1, 2, 6, 3, 4, 5]
In questo esempio, abbiamo inserito l'elemento 6
nella posizione 2
, che corrisponde alla terza posizione della lista. La conseguenza è che tutti gli elementi che erano dopo la posizione 2
sono stati spostati di una posizione verso destra.
Con il metodo insert
possiamo inserire un elemento in testa alla lista, ossia in prima posizione. Basta usare come indice 0
:
>>> lista = [1, 2, 3, 4, 5]
>>> lista.insert(0, 6)
>>> lista
[6, 1, 2, 3, 4, 5]
Analogamente, possiamo inserire un elemento in coda alla lista, ossia in ultima posizione. Basta usare come indice len(lista)
:
>>> lista = [1, 2, 3, 4, 5]
>>> lista.insert(len(lista), 6)
>>> lista
[1, 2, 3, 4, 5, 6]
Metodo insert
per le Liste
Il metodo insert
permette di aggiungere un elemento in una posizione arbitraria di una lista. La sintassi è la seguente:
lista.insert(indice, elemento)
Rimuovere un elemento da una lista: pop
Abbiamo già visto nella lezione precedente che esiste l'istruzione del
per rimuovere un elemento da una lista. Per usare del
bisogna passare l'elemento indicizzato della lista stessa, in questo modo:
>>> lista = [1, 2, 3, 4, 5]
>>> del lista[2]
>>> lista
[1, 2, 4, 5]
Il problema di del
è che non restituisce alcun risultato. Supponiamo che vogliamo rimuovere l'elemento con indice 2
e salvarne il valore in una variabile. In questo caso, dovremmo usare più istruzioni:
>>> lista = [1, 2, 3, 4, 5]
>>> elemento = lista[2]
>>> del lista[2]
>>> elemento
3
Per evitare di usare più istruzioni, possiamo usare il metodo pop
. Il metodo pop
accetta come argomento l'indice dell'elemento da rimuovere. Il metodo pop
restituisce l'elemento rimosso.
>>> lista = [1, 2, 3, 4, 5]
>>> elemento = lista.pop(2)
>>> elemento
3
>>> lista
[1, 2, 4, 5]
In tal caso, come quando usiamo del
, tutti gli eventuali elementi alla destra dell'elemento rimosso vengono spostati di una posizione verso sinistra.
Se non passiamo alcun indice al metodo pop
, viene rimosso l'ultimo elemento della lista:
>>> lista = [1, 2, 3, 4, 5]
>>> elemento = lista.pop()
>>> elemento
5
>>> lista
[1, 2, 3, 4]
Metodo pop
per le Liste
Il metodo pop
permette di rimuovere un elemento da una lista. La sintassi è la seguente:
lista.pop(indice)
Se non viene passato alcun indice, viene rimosso l'ultimo elemento della lista.
Il metodo pop
restituisce l'elemento rimosso.
Rimuovere un elemento da una lista: remove
Il metodo pop
permette di rimuovere un elemento da una lista, dato il suo indice. Se non conosciamo l'indice dell'elemento da rimuovere, possiamo usare il metodo remove
.
Il metodo remove
accetta come argomento l'elemento da rimuovere. Quindi, cerca all'interno della lista un elemento uguale a quello passato come argomento e lo rimuove.
>>> lista = [1, 2, 3, 4, 5]
>>> lista.remove(3)
>>> lista
[1, 2, 4, 5]
Se l'elemento non è presente nella lista, viene sollevata un'eccezione ValueError
:
>>> lista = [1, 2, 3, 4, 5]
>>> lista.remove(6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
Nel caso in cui vi sono più elementi uguali nella lista, viene rimosso solo il primo elemento:
>>> lista = [1, 2, 3, 4, 5, 3]
>>> lista.remove(3)
>>> lista
[1, 2, 4, 5, 3]
Vediamo un esempio con delle stringhe:
>>> lista = ["ciao", "come", "va", "ciao"]
>>> lista.remove("ciao")
>>> lista
['come', 'va', 'ciao']
Il metodo remove
, inoltre, non restituisce alcun risultato.
Metodo remove
per le Liste
Il metodo remove
permette di rimuovere un elemento da una lista, dato il suo valore. La sintassi è la seguente:
lista.remove(elemento)
Se vi sono più occorrenze dell'elemento nella lista, viene rimosso solo il primo elemento.
Rimuovere tutti gli elementi da una lista: clear
L'ultimo metodo che vedremo in questa lezione è clear
. Il metodo clear
permette di rimuovere tutti gli elementi da una lista.
>>> lista = [1, 2, 3, 4, 5]
>>> lista.clear()
>>> lista
[]
Il metodo clear
non restituisce alcun risultato.
Metodo clear
per le Liste
Il metodo clear
permette di rimuovere tutti gli elementi da una lista. La sintassi è la seguente:
lista.clear()
In Sintesi
In questa lezione abbiamo visto alcuni dei metodi messi a disposizione da una lista che risultano molto utili.
Abbiamo visto:
append
: aggiunge un elemento alla fine della listaextend
: aggiunge tutti gli elementi di un'altra lista alla fine della listainsert
: aggiunge un elemento in una posizione arbitraria di una listapop
: rimuove un elemento da una lista, dato il suo indiceremove
: rimuove un elemento da una lista, dato il suo valoreclear
: rimuove tutti gli elementi da una lista