2.9. Introduzione alle tuple

Una tupla è una lista immutabile. Una tupla non può essere modificata in alcun modo una volta che è stata creata.

Esempio 2.23. Definire una tupla

>>> t = ("a", "b", "mpilgrim", "z", "example") 1
>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t[0]                                       2
'a'
>>> t[-1]                                      3
'example'
>>> t[1:3]                                     4
('b', 'mpilgrim')
1 Una tupla è definita allo stesso modo di una lista, eccetto che l'intero gruppo di elementi viene racchiuso fra parentesi tonde invece che quadre.
2 Gli elementi di una tupla hanno un ordine definito, proprio come le liste. Gli indici delle tuple partono da zero, come visto nelle liste, perciò il primo elemento di una tupla non vuota è sempre t[0].
3 Gli indici negativi vengono contati dalla fine della tupla, come nelle liste.
4 Anche l'affettamento (slicing) funziona come nelle liste. Notate che quando affettate una lista, ottenete una nuova lista, quando affettate una tupla ottenete una nuova tupla.

Esempio 2.24. Le tuple non hanno metodi

>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t.append("new")    1
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'append'
>>> t.remove("z")      2
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'remove'
>>> t.index("example") 3
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'index'
>>> "z" in t           4
1
1 Non potete aggiungere elementi ad una tupla. Le tuple non hanno i metodi append ed extend.
2 Non potete rimuovere elementi da una tupla. Le tuple non hanno i metodi remove o pop.
3 Non potete cercare elementi in una tupla. Le tuple non hanno il metodo index.
4 Potete, comunque, usare in per vedere se un elemento è presente nella tupla.

A cosa servono le tuple?

Nota
Le tuple possono essere convertite in liste e viceversa. La funzione built-in tuple prende una lista e ritorna una tupla con gli stessi elementi, mentre la funzione list prende una tupla e ritorna una lista. In effetti, tuple congela una lista e list scongela una tupla.

Ulteriori letture

Footnotes

[2] In verità, è più complicato di così. Le chiavi di un dizionario devono essere immutabili. Le stesse tuple sono immutabili, ma se avete una tupla di liste, questa è mutabile e quindi non è sicuro usarla come chiave di un dizionario. Solo tuple di stringhe, numeri o altre tuple sicure possono essere usate come chiavi per un dizionario.