python tuple strutture-dati

Le Tuple in Python

Obiettivi della pillola

Alla fine di questa pillola saprai:

  • creare e inizializzare tuple (tuple);
  • accedere agli elementi tramite indice;
  • comprendere l’immutabilità delle tuple;
  • usare le tuple per assegnazioni multiple e come chiavi nei dizionari;
  • distinguere chiaramente le tuple da liste e set.

Cos’è una tupla

Una tupla è una collezione ordinata e immutabile di elementi. Si crea con le parentesi tonde ( ) o con la funzione tuple().

coordinate = (10, 20)
colori = ("rosso", "verde", "blu")
vuota = ()
singleton = (5,)     # tupla con un solo elemento

Nota: Le tuple possono contenere elementi eterogenei e anche altre tuple.

Accesso agli elementi

Come per le liste, si usano gli indici (partono da 0).

t = ("a", "b", "c", "d")
print(t[0])   # a
print(t[2])   # c
print(t[-1])  # d (ultimo elemento)

Immutabilità

Una volta creata, una tupla non può essere modificata: non si possono aggiungere, eliminare o cambiare elementi. Questo la rende più “sicura” quando non vuoi che i dati vengano alterati.

t = (1, 2, 3)
# t[0] = 99    # ERRORE: oggetti tuple non supportano l'assegnazione

Nota: Puoi però creare una nuova tupla a partire da altre:

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

Assegnazioni multiple

Le tuple sono molto usate per unpacking e assegnazioni multiple.

punto = (3, 4)
x, y = punto
print(x, y)    # 3 4

a, b, c = (10, 20, 30)
print(a+b+c)   # 60

Tuple come chiavi nei dizionari

Essendo immutabili, le tuple possono essere usate come chiavi in un dizionario (cosa non possibile con le liste).

rubrica = {
    ("Mario", "Rossi"): "333-1234567",
    ("Luca", "Bianchi"): "333-7654321"
}
print(rubrica[("Mario", "Rossi")])

Funzioni utili

  • len(t) → lunghezza della tupla.
  • min(t), max(t) → minimo e massimo (se comparabili).
  • tuple(lista) → converte una lista in tupla.
  • slicing → come con le liste: t[1:3].
t = (10, 20, 30, 40)
print(len(t))     # 4
print(t[1:3])     # (20, 30)
print(tuple([1, 2, 3]))  # (1, 2, 3)

Differenze con liste e set

  • Liste: ordinate, mutabili, consentono duplicati.
  • Set: non ordinati, mutabili, eliminano duplicati, non indicizzabili.
  • Tuple: ordinate, immutabili, consentono duplicati, indicizzabili.
lista = [1, 2, 2, 3]
insieme = {1, 2, 2, 3}
tupla = (1, 2, 2, 3)
print(lista)    # [1, 2, 2, 3]
print(insieme)  # {1, 2, 3}
print(tupla)    # (1, 2, 2, 3)

In breve: usa una tupla quando ti serve una collezione ordinata e immutabile di valori, utile ad esempio per rappresentare coordinate, date o record fissi.