Python Language Le tuple sono immutabili


Esempio

Una delle principali differenze tra le list s e le tuple in Python è che le tuple sono immutabili, cioè non è possibile aggiungere o modificare elementi una volta che la tupla è stata inizializzata. Per esempio:

>>> t = (1, 4, 9)
>>> t[0] = 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Allo stesso modo, le tuple non hanno metodi .append e .extend come fa la list . Usare += è possibile, ma cambia il binding della variabile, e non la tupla stessa:

>>> t = (1, 2)
>>> q = t
>>> t += (3, 4)
>>> t
(1, 2, 3, 4)
>>> q
(1, 2)

Fai attenzione quando posizioni oggetti mutabili, come lists , all'interno di tuple. Questo può portare a risultati molto confusi quando li si cambia. Per esempio:

>>> t = (1, 2, 3, [1, 2, 3])
(1, 2, 3, [1, 2, 3])
>>> t[3] += [4, 5]

Entrambi genereranno un errore e cambieranno il contenuto della lista all'interno della tupla:

TypeError: 'tuple' object does not support item assignment
>>> t
(1, 2, 3, [1, 2, 3, 4, 5])

Puoi usare l'operatore += per "aggiungere" ad una tupla - questo funziona creando una nuova tupla con il nuovo elemento che hai "aggiunto" e assegnandolo alla sua variabile corrente; la vecchia tupla non è cambiata, ma sostituita!

Questo evita la conversione da e verso un elenco, ma questo è lento ed è una cattiva pratica, specialmente se si intende aggiungere più volte.