Home / Blog /

Python list: come funzionano le liste in Python ed esempi pratici

di Giuseppe Maggi

In questa guida parliamo di Python list. Le liste in Python rappresentano una struttura dati sequenziale che memorizza gli elementi in un determinato ordine, ammette duplicati e permette di modificare gli oggetti che contiene. Vediamo come funziona.

Come creare una lista in Python

La creazione di una lista in Python è molto semplice, è possibile farlo semplicemente ponendo il suo contenuto all’interno di una coppia di parentesi quadre, in questo modo:

lista = ["Ugo", "Ernesto", "Carolina", "Mario", "Roberta"]

Gli elementi non solo saranno stati inclusi nella lista ma saranno anche stati, ognuno, indicizzati mediante la posizione di inserimento conteggiata a partire da zero. Si badi che qui abbiamo utilizzato delle stringhe ma possiamo creare liste di qualsiasi tipo di oggetto.

Mediante l’uso delle parentesi quadre potremo accedere ai singoli elementi a specifiche posizioni sia in lettura, che in scrittura, infatti con:

print(lista[3])

otterremo in output la stringa “Mario” e potremo sostituirla in questo modo:

lista[3]='Gianluca'

per ottenere un contenuto della lista di questo tipo:

['Ugo', 'Ernesto', 'Carolina', 'Gianluca', 'Roberta']

Per sapere invece quanti elementi contiene una lista possiamo utilizzare la funzione built-in len.

Con il comando:

len(lista)

otterremo infatti il numero 5.

» VUOI SAPERNE DI PIU’? VAI AI NOSTRI CORSI PYTHON «

Indexing e slicing

In generale, il meccanismo di accesso per posizione a singoli elementi delle liste prende il nome di indexing e diventa anche più flessibile con l’utilizzo di indici negativi con cui potremo indicizzare elementi a partire dalla fine: l’ultimo oggetto incluso nella lista sarà indicato con -1.

Ad esempio, con le seguenti espressioni accederemo in entrambi i casi alla stringa Carolina:

lista[2]
lista[-3]

Esiste anche il meccanismo dello slicing, anch’esso altamente diffuso, che permette di estrarre una sotto sequenza indicandone posizione iniziale e finale, come in questo esempio:

lista[1:3]

che restituisce una nuova lista contenente le stringhe in posizione 1 e 2:

['Ernesto', 'Carolina']

L’elemento in posizione 3 non è stato incluso in quanto l’indice finale indica il primo elemento non incluso nella selezione.

Si possono utilizzare anche nello slicing indici negativi infatti la medesima sequenza [‘Ernesto’,’Carolina’] può essere ottenuta mediante:

lista[1:-2]

Nel caso in cui nello slicing non venga incluso uno dei due indici, da quella estremità si otterranno tutti gli elementi disponibili.

Ad esempio, con:

lista[2:]

si ottengono tutti gli elementi dal terzo elemento (posizione 2 conteggiata a partire da 0) fino a fine lista:

['Carolina', 'Gianluca', 'Roberta']

Allo stesso modo, lista[:2] restituisce i primi due elementi:

['Ugo', 'Ernesto']
VUOI IMPARARE A PROGRAMMARE IN PYTHON?

Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi!
OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂

Metodi delle liste

Gli oggetti lista comprendono una serie di metodi per la manipolazione del loro contenuto accessibili mediante l’operatore punto (.):

  • append(oggetto): riceve come argomento un oggetto che aggiunge alla lista;
  • count(valore): restituisce il numero di oggetti di uno specifico valore;
  • insert(posizione, oggetto): permette di inserire un elemento nuovo alla lista ma a differenza di append non lo fa in coda, ma nella posizione specificata. Riceve due argomenti: un intero che rappresenta la posizione e l’oggetto da inserire;
  • reverse(): inverte la lista;
  • clear(): svuota la lista;
  • extend(lista): concatena gli elementi della lista passata come argomento alla lista su cui viene invocato;
  • pop(indice): rimuove e restituisce l’elemento nella posizione indicata o l’ultimo della lista se questo non è specificato;
  • sort(): ordina la lista;
  • copy(): restituisce una copia della lista;
  • index(valore): restituisce l’indice della prima occorrenza del valore specificato;
  • remove(oggetto): rimuove dalla lista l’oggetto passato come argomento.

Svolgiamo una veloce sessione di prova in cui sperimentiamo tutti questi metodi. Ogni operazione è accompagnata da un commento che indica il risultato che otteniamo.

lista = ['Alessia', 'Alessia', 'Mario', 'Samuele', 'Mario', 'Alessia']
# crea la lista ['Alessia', 'Alessia', 'Mario', 'Samuele', 'Mario', 'Alessia']

lista.append('Giovanni')
# aggiunge Giovanni alla lista

conta_mario = lista.count('Mario')
# conta quante volta appare Mario

lista.insert(2, 'Paola')
# aggiunge Paola in terza posizione
# ['Alessia', 'Alessia', 'Paola', 'Mario', 'Samuele', 'Mario', 'Alessia']

lista.reverse()
# inverte la lista che diventa:
# ['Alessia', 'Mario', 'Samuele', 'Mario', 'Paola', 'Alessia', 'Alessia']

lista.extend(['Nora', 'Simone', 'Alberta'])
# aggiunge in fondo alla lista ['Nora', 'Simone', 'Alberta']

x = lista.pop(2)
# rimuove Samuele dalla lista (terzo elemento) assegnandolo a x

lista.sort()
# ordina la lista in senso alfabetico crescente

dove_mario = lista.index('Mario')
# trova la prima istanza di Mario (posizione 4 perchè abbiamo ordinato la lista)

lista.remove('Alessia')
# rimuove la prima istanza di Alessia dalla lista che ora è:
# ['Alberta', 'Alessia', 'Alessia', 'Mario', 'Mario', 'Nora', 'Paola', 'Simone']

copia = lista.copy()
# crea una copia della lista

lista.clear()
# svuota la lista ma nell'oggetto copia avremo ancora tutti gli oggetti

Come detto nei commenti otterremo alla fine, in lista, una struttura totalmente vuota mentre in copia saranno rimasti tutti gli oggetti che abbiamo salvato durante l’esecuzione del metodo copy.

Conclusione

Come si vede le Python list costituiscono un completo insieme di funzionalità per la gestione di oggetti in sequenza. Saranno fondamentali per la manipolazione di valori di ogni genere e dati veicolati mediante diverse fonti di input. Tuttavia, Python possiede altre strutture dati che permetteranno di gestire situazioni diverse: ricordiamo a proposito le tuple, simili alle liste ma utilizzabili in sola lettura, i dizionari per l’allocazione di valori etichettati con una chiave univoca ed i set che non memorizzano la posizione degli oggetti e pertanto non ammettono duplicati.

» VUOI SAPERNE DI PIU’? VAI AI NOSTRI CORSI PYTHON «