Le Liste in Python

Scritto da ambrix on . Postato in Corsi Programmazione

logo python ambrix.net

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

Le Liste sono quindi indicizzate, per accedere ad un particolare elemento dobbiamo inserire il nome della lista e l’indice tra parantesi quadre. Tuttavia se inseriamo tra parentesi quadre un indice negativo, python inizia a contare dall’ultimo elemento della lista.
# 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

liste python ambrisi

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

Ricordiamoci che per le tuple non è possibile modificare il valore di tup2[1], cosa che è possibile con le liste.

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

Per Richieste, Avvisi e Lasciti Ereditari

Disclaimer

I contenuti di questo Blog (testi, immagini, foto, etc.) sono di mia creazione, tranne nei casi dove espressamente indicato.