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 (...)
.
.. ipython:: python type((1,2,3)) a = 1,2,3 type(a)
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.
.. ipython:: python [(1, 2), (3, 4)] [1, 2, 3, 4] [(1, 2), (3, 4)] == [1, 2, 3, 4]
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.
.. ipython:: python (1,2) + (3,4) a = (1,2) a += (3,4) a
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.
.. ipython:: python a = (1, 'a', 2, 'b', 3, 'c', 4, 'd', 5, 'e', 6, 'f') a[3] a[2:] a[:5] a[-3] a[2:9:2] a[8:1:-3]
Par contre, on ne peut pas modifier un tuple : on ne peut ni modifier ses éléments, ni en ajouter, ni en enlever.
.. ipython:: python :okexcept: s = (1, 2, 3) s[0] = 4
A nouveau, la fonction len
renvoie la longueur d'un tuple.
.. ipython:: python len((1.23, 'abc', 45))
Affectations multiples
Les tuples permettent d'affecter des valeurs à plusieurs variables en même temps [2].
.. ipython:: python a, b, c = 1, 2, 3 a b c
Cela permet notamment d'échanger élégamment les valeurs de deux variables [3].
.. ipython:: python a, b = 1, 2 a b a, b = b, a a b
Notes
[1] | Il s'agit exactement de la notion de uplet en mathématiques. L'appellation tuple provient en fait de l'anglais. En effet, en anglais, on parle de "quadruple", "quintuple", etc.. et plus généralement de n-tuple tandis qu'en français, on emploie les termes "quadruplet", "quintuplet", etc.. et de manière générale n-uplet. Néanmoins, la terminologie anglo-saxonne s'est imposée en ce qui concerne Python. |
[2] | On peut également procéder à des affectations multiples à l'aide de listes. .. ipython:: python [a, b, c] = [1, 2, 3] a b c |
[3] | A nouveau, on peut également utiliser des listes pour échanger les valeurs de deux variables. .. ipython:: python [a, b] = [1, 2] a b [a, b] = [b, a] a b |