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.
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.
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']
Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi!
OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂
Gli oggetti lista comprendono una serie di metodi per la manipolazione del loro contenuto accessibili mediante l’operatore punto (.):
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.
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.