P.21 Tuple

A prima vista una tupla è come una lista, ma differenza di questa è immutabile, cioè il suo contenuto non può essere modificato. Gli elementi di una tupla sono disposti in ordine e possiamo richiamarli con un indice, proprio come per le liste. Possiamo avere anche elementi ripetuti, appunto perché sono distinti dalla loro posizione. Possiamo usare delle tuple per memorizzare dati differenti (es. il nome di un prodotto,la sua quantità e il prezzo), preferendo le liste per dati omogenei (tutti dello stesso tipo e significato).

Le tuple essendo a sola lettura sono ottimizzate e hanno tempi di accesso più brevi.

Questa è una lista:

lista = [1, 2, 3]

e questa è una tupla:

mytupla = ("apple", "banana", "cherry")

L’unica differenza sono le parentesi: quadre per la liste e tonde per la tupla. Non ci sono vincoli a quello che possiamo inserire in una tupla e quindi possiamo anche avere anche tipi “misti”:

mytupla = ("Ciao", 100, 3.14)
print(mytupla)

Possiamo stampare direttamente una lista passandola a print(), oppure scorrendo gli elementi uno a uno con un ciclo:

for x in mytupla:
    print(x)

Possiamo accedere agli elementi con un indice che parte da 0:

print(mytupla[1])

Il numero di elementi è dato da:

len(tupla)

Possiamo contare quante volte un elemento compare in una lista utilizzando count():

lettere = ("A", "B", "C", "B", "D")
print(lettere.count("B"))

Le tuple ci permettono di utilizzare il meccanismo di “impacchettamento/spacchettamento” (packing/unpacking) che ci permette di creare una tupla elencando delle variabili o dei valori seguiti da delle virgole:

dati = "cane", 100, 3.14
print(dati)

Lo spacchettamento prende il contenuto di una tupla e lo assegna a più variabili. Il numero delle variabili deve essere pari al numero di elementi contenuti nella tupla:

a, b, c = dati

print(a)      # cane
print(b)      # 100
print(c)      # 3.14

Non è possibile modificare, cancellare, aggiungere elementi ad una tupla ma possiamo cercarli con index(). Per ottenere la posizione della lettera C all’interno della tupla lettere scriveremo:

lettere = ("A", "B", "C", "B", "D")
posizione = lettere.index("C")
print(posizione)

Pre verificare la presenza di un elemento in una tupla utilizziamo in:

lettere = ("A", "B", "C", "B", "D")
if “A” in lettere:
    print(“A e’ presente”)

Gli operatori di Python permettono di svolgere operazioni esotiche con le tuple. Possiamo unire due tuple, sommandole e questo non dovrebbe stupirci:

t = (1,2,3)
p = (4,5)
print(t + p)

Ottenendo:

(1, 2, 3, 4, 5)

Possiamo però moltiplicare una tupla, per esempio per 2, raddoppiando i suoi elementi!

t = (1,2,3)
print(t * 2)

producendo:

(1,2,3,1,2,3)

Cose da provare

Come puoi stampare gli elementi di una tupla con un while?