Python Language Les tuples sont immuables


Exemple

L'une des principales différences entre les list s et les tuple dans Python est que les tuples sont immuables, c'est-à-dire que l'on ne peut pas ajouter ou modifier des éléments une fois le tuple initialisé. Par exemple:

>>> 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

De même, les tuples n'ont pas de méthodes .append et .extend comme le fait la list . Utiliser += est possible, mais cela change la liaison de la variable, et non le tuple lui-même:

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

Soyez prudent lorsque vous placez des objets mutables, tels que des lists , à l'intérieur de tuples. Cela peut conduire à des résultats très déroutants lors de leur modification. Par exemple:

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

Est-ce que les deux déclencheront une erreur et changeront le contenu de la liste dans le tuple:

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

Vous pouvez utiliser l'opérateur += pour "ajouter" à un tuple - cela fonctionne en créant un nouveau tuple avec le nouvel élément "ajouté" et l'assignez à sa variable actuelle; le vieux tuple n'est pas changé, mais remplacé!

Cela évite la conversion vers et depuis une liste, mais c'est lent et c'est une mauvaise pratique, surtout si vous allez ajouter plusieurs fois.