Skip to content

Tuple

Una tupla è simile a una lista: contiene elementi in ordine. La differenza fondamentale è che le tuple sono immutabili: una volta create, non si possono modificare. Non puoi aggiungere, togliere o cambiare gli elementi.

Pensa alle tuple come a dati “fissi”: le coordinate GPS di un posto, i giorni della settimana, i colori del semaforo. Sono informazioni che non devono cambiare.

Le tuple si scrivono con le parentesi tonde ():

coordinate = (10, 20)
colori = ("rosso", "verde", "blu")
mista = (1, "ciao", True, 3.14)
vuota = ()

Attenzione: Una tupla con un solo elemento richiede una virgola finale, altrimenti Python la interpreta come una normale espressione tra parentesi:

non_e_tupla = (42) # è solo il numero 42 tra parentesi!
e_una_tupla = (42,) # la virgola la rende una tupla

Funziona esattamente come per le liste, con gli indici:

colori = ("rosso", "verde", "blu")
print(colori[0]) # rosso
print(colori[-1]) # blu — l'ultimo elemento
print(colori[1:3]) # ('verde', 'blu') — slicing

Se provi a cambiare un elemento, Python dà errore:

colori = ("rosso", "verde", "blu")
colori[0] = "giallo" # TypeError: 'tuple' object does not support item assignment

Questo è il comportamento voluto: garantisce che i dati rimangano intatti.

Anche se non si modificano, puoi comunque combinarle e controllarle:

a = (1, 2, 3)
b = (4, 5, 6)
print(a + b) # (1, 2, 3, 4, 5, 6) — crea una nuova tupla unendo le due
print(a * 2) # (1, 2, 3, 1, 2, 3) — ripete
print(3 in a) # True — controlla se 3 è presente
print(len(a)) # 3 — numero di elementi

Puoi assegnare gli elementi di una tupla a più variabili in una sola riga. Si chiama unpacking (spacchettamento):

coordinate = (10, 20)
x, y = coordinate
print(x) # 10
print(y) # 20
nome, eta, citta = ("Alice", 16, "Roma")
print(nome) # Alice
print(eta) # 16
print(citta) # Roma

Funziona anche con le liste. L’importante è che il numero di variabili corrisponda al numero di elementi.

Se hai una tupla e hai bisogno di modificarla, convertila in lista, modificala e riconvertila:

t = (1, 2, 3)
l = list(t) # converte in lista
l.append(4) # modifica la lista
t = tuple(l) # riconverte in tupla
print(t) # (1, 2, 3, 4)

Quando usare una tupla invece di una lista?

Section titled “Quando usare una tupla invece di una lista?”

Usa una tupla quando:

  • I dati non devono mai cambiare (coordinate, giorni della settimana, codici fissi)
  • Vuoi comunicare a chi legge il codice che quei dati sono “di sola lettura”
  • Hai bisogno di usarla come chiave di un dizionario (le liste non si possono usare come chiavi)

Usa una lista per tutto il resto, quando i dati possono cambiare.