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.

Definizione

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]
Definizione

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]
Definizione

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]
Definizione

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.

Definizione

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.

Definizione

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 lista
  • extend: aggiunge tutti gli elementi di un'altra lista alla fine della lista
  • insert: aggiunge un elemento in una posizione arbitraria di una lista
  • pop: rimuove un elemento da una lista, dato il suo indice
  • remove: rimuove un elemento da una lista, dato il suo valore
  • clear: rimuove tutti gli elementi da una lista