Tuples

Un tuple est une liste non-modifiable : les objets present dans le tuple sont déterminés à sa creation. On crée un tuple comme une liste en remplaçant les crochets par des parenthèses :

>>> t = (1, "deux", 3)

On les utilise ensuite comme une liste :

>>> len(t)
3
>>> t[1]
'deux'

Les méthodes de listes qui ne modifient pas la liste sont utilisables, par exemple :

>>> t.index(3)
2

Mais modifier les éléments d'un tuple est interdit :

>>> t[0] = "un"
Traceback (most recent call last):
  File "<python-input-8>", line 1, in <module>
    t[0] = "un"
    ~^^^
TypeError: 'tuple' object does not support item assignment

Tout comme les méthodes modifiant la liste :

>>> t.append(4)
Traceback (most recent call last):
  File "<python-input-7>", line 1, in <module>
    t.append(4)
    ^^^^^^^^
AttributeError: 'tuple' object has no attribute 'append'

Les tuples sont très pratiques lorsque l'on veut créer un conteneur qui puisse être donner à d'autres méthodes ou fonctions sans crainte qu'elle soit modifié. Dans le doute : utilisez des tuples plutôt que des listes, cela vous évitera des problèmes.

On finira cette partie par quelques cas d'usage courant.

Créer un tuple de 1 élément

t = (2,)

Si vous oubliez la virgule, vous ne ferez que mettre des parenthèses autour de l'entier 2.

Créer un tuple issu d'une itération

Comme un tuple est fixé à sa création, pour créer un tuple issue d'une itération, on commence par créer une liste puis on la transforme en tuple :

>>> l = []
>>> for i in range(10):
...     l.append(i **2)
...
>>> t = tuple(l)
>>> t
(0, 1, 4, 9, 16, 25, 36, 49, 64, 81)

Attention

Si un tuple n'est pas modifiable, ce nest pas le cas des objets qui le compose.

>>> t = ((1, 2), [1, 2])
>>> t[1].append(3)
>>> t
((1, 2), [1, 2, 3])