Le Liste in Python

Lezione#07 Benvenuti alla settima lezione del corso Python in 11 passi: sotto esame le Liste.
In Python le liste sono un tipo di array (collections). In generale una collection si può concretizzare attraverso:
- Una Lista è una raccolta ordinata e modificabile. Consente elementi duplicati.
- Una Tupla è una raccolta ordinata e non modificabile. Consente elementi duplicati.
- Un Set è una raccolta non ordinata e non indicizzata. Non consente elementi duplicati.
- Un Dizionario è una raccolta non ordinata, modificabile e indicizzata. Non consente elementi duplicati
Quando si sceglie un tipo di raccolta, è utile comprendere le proprietà di quel tipo. Scegliere il tipo giusto per un determinato set di dati avrebbe il vantaggio di un aumento dell’efficienza e/o della sicurezza.
Ma ora soffermiamoci sulle Liste, focus di questa lezione.
Le liste vengono definite elencando tra parentesi quadre ([]) una serie di oggetti separati da virgole (,). È possibile creare una lista vuota usando le parentesi quadre senza nessun elemento all’interno. Ma vediamo un primo esempio:
# script_701.py myList = ["Indiana", 34, "Marion", 27, "Henry", 65] print(myList[0] + ", " + myList[2] + ", " + myList[4])
Indiana, Marion, Henry
Nella lista appena creata si noti la coesistenza di numeri e stringhe. Inoltre ricordiamoci che si parte a contare da 0 (il primo elemento della lista). Potremmo anche pensare di stampare a video l’intera lista in questo modo:
# script_702.py myList = ["Indiana", 34, "Marion", 27, "Henry", 65] print("cast:" + str(myList))
cast: [‘Indiana’, 34, ‘Marion’, 27, ‘Henry’, 65]
Nel secondo script, abbiamo usato la funzione str() per convertire l’intera lista in un’unica stringa. Così è possibile visualizzare una lista come parte di una stringa.
Se vogliamo sapere la lunghezza della lista, possiamo usare len() per avere in output il numero di componenti della stessa:
# script_703.py myList = ["Indiana", 34, "Marion", 27, "Henry", 65] print(len(myList)) #len() sta per length
6
# script_704.py myList = ["Indiana", 34, "Marion", 27, "Henry", 65] print(myList[-1])
65
Abbiamo anche scritto che le liste sono modificabili. Pertanto vediamo come aggiungere un elemento ad una lista esistente.
# script_705.py myList = ["Indiana", "Marion", "Henry"] myList.append("Mutt") print(myList)
[‘Indiana’, ‘Marion’, ‘Henry’, ‘Mutt’]
Usando la funzione append(), abbiamo aggiunto (appeso) un nuovo elemento alla lista esistente. Si noti che si può in questo caso aggiungere un solo elemento per volta.
La versatilità di python e, nel caso in esame, delle liste viene fuori manipolando le strutture dati. Infatti, possiamo inglobare liste nelle liste:
# script_706.py names = ["Indiana", "Marion", "Henry", "Mutt"] surnames = ["Jones", "Ravenwood"] ages = [34, 27, 65, 17] myList = [names, surnames, ages] print(myList[0][0], myList[1][0] + ", " + str(myList[2][0]))
Indiana Jones, 34
Ottimo lavoro! Abbiamo appena creato una lista di liste. In questo caso abbiamo bisogno di 2 indici per accedere agli elementi. Possiamo immaginare di avere una matrice con righe e colonne, indicizzate a partire da 0. La figura al lato può aiutarci a capire come python lavora queste strutture dati, muovendosi come se fosse in una matrice. Prestando però attenzione al fatto che non tutti gli elementi sono presenti e pertanto questi non saranno accessibili.
Le Tuple Vediamo ora come si lavora con le tuple. Come già indicato all’inizio di questa pagina, una Tupla è una raccolta ordinata, non modificabile che consente elementi duplicati. A prima vista le tuple potrebbe essere come le liste, tuttavia le prime sono più “immediate”: si tende ad usare le tuple in modalità si sola-lettura, con dati che restano inalterati.# script_707.py tup1 = ("Indiana Jones", "b.day 1899") tup2 = ("Marshall College", "Classroom 113/L") print(tup2[1])
Classroom 113/L
Possiamo usare i due punti per lo slicing, che in questo caso restituisce i primi due elementi della tupla.
# script_708.py tup1 = ("Indiana Jones", "b.day 1899") tup2 = ("Marshall College", "Classroom 113/L") print(tup2[:2])
(‘Marshall College’, ‘Classroom 113/L’)
Possiamo anche convertire una tupla in una lista:
# script_709.py myTuple = ("Indiana Jones", "b.day 1899") myList = list(tup) myList[1] = "Princeton" print(myList)
[‘Indiana Jones’, ‘Princeton’]
Col metodo list() abbiamo convertito una tupla in una lista. E, non per magia, è possibile trasformare una lista in una tupla. Il metodo? Ovviamente tuple().
# script_710.py myList = ["Indiana Jones", "b.day 1899"] myTuple = tuple(myList) print(myTuple)
(‘Indiana Jones’, ‘b.day 1899’)
Da questi ultimi due esempi abbiamo messo a fuoco le due strutture dati: parentesi tonde (tuple) e parentesi quadre (liste).
Ancora un altro esempio sulle liste in python:
# script_711.py mySquad = ["Indiana Jones", "Star Lord", "John Snow"] mySquad.append(["XyZ", True, 1976]) print(mySquad)
[‘Indiana Jones’, ‘Star Lord’, ‘John Snow’, [‘XyZ’, True, 1976]]
Tutta la versatilità delle liste! Queste strutture dati possono memorizzare una molteplità di valori in un’unica soluzione, così come fatto nell’ultimo esempio.
Lezione precedente <– []–> Lezione successiva