3.2. Tuples

Un tuple est tout à fait similaire à une liste : il s’agit d’une collection d’objets [1] . On crée un tuple en séparant les objets par des des virgules , et en les encadrant éventuellement par des parenthèses (...).

In [1]: type((1,2,3))
Out[1]: tuple

In [2]: a = 1,2,3

In [3]: type(a)
Out[3]: tuple

Quand faut-il encadrer un tuple avec des parenthèses ? Par exemple si l’on crée une liste dont certains arguments sont des tuples.

In [4]: [(1, 2), (3, 4)]
Out[4]: [(1, 2), (3, 4)]

In [5]: [1, 2, 3, 4]
Out[5]: [1, 2, 3, 4]

In [6]: [(1, 2), (3, 4)] == [1, 2, 3, 4]
Out[6]: False

Ou bien quand on on apelle une fonction dont un ou plusieurs arguments sont des tuples.

f((1, 2), (3, 4))   # fonction de deux arguments (deux tuples)
f(1, 2, 3, 4)       # fonction de quatre arguments (quatre entiers)

Les opérateurs + et += fonctionnent comme pour les listes.

In [7]: (1,2) + (3,4)
Out[7]: (1, 2, 3, 4)

In [8]: a = (1,2)

In [9]: a += (3,4)

In [10]: a
Out[10]: (1, 2, 3, 4)

On peut accéder aux éléments d’un tuple de la même manière qu’on accède aux éléments d’une liste.

In [11]: a = (1, 'a', 2, 'b', 3, 'c', 4, 'd', 5, 'e', 6, 'f')

In [12]: a[3]
Out[12]: 'b'

In [13]: a[2:]
Out[13]: (2, 'b', 3, 'c', 4, 'd', 5, 'e', 6, 'f')

In [14]: a[:5]
Out[14]: (1, 'a', 2, 'b', 3)

In [15]: a[-3]
Out[15]: 'e'

In [16]: a[2:9:2]
Out[16]: (2, 3, 4, 5)

In [17]: a[8:1:-3]
Out[17]: (5, 'c', 2)

Par contre, on ne peut pas modifier un tuple : on ne peut ni modifier ses éléments, ni en ajouter, ni en enlever.

In [18]: s = (1, 2, 3)

In [19]: s[0] = 4
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[19], line 1
----> 1 s[0] = 4

TypeError: 'tuple' object does not support item assignment

A nouveau, la fonction len renvoie la longueur d’un tuple.

In [20]: len((1.23, 'abc', 45))
Out[20]: 3

Notes