Les tuples¶
Les tuples ressemblent aux tableaux, mais que contrairement à eux, ils sont immutables. Une fois créé, il n'est plus possible de modifier leurs éléments ou d'en ajouter. C'est très pratique pour stocker des données qui peuvent être de types différents.
Définition par extension:¶
# Un tuple contenant 3 éléments
film = ('Taxi Driver', 'Martin Scorsese', 1976)
# Un tableau de tuples
films = [('Swordfish', 'Dominic Sena', 2001), ('Snowden', ' Oliver Stone', 2016), ('Taxi Driver', 'Martin Scorsese', 1976)]
En Python, un tuple se définie à l’aide de valeurs entre parenthèses séparées par des virgules. Son type est tuple
.
>>> A= (1,2)
>>> B = (2,1)
>>> A == B # l'ordre est important
False
>>> type(A)
tuple
On peut créer un tuple sans utiliser de parenthèses, mais leur présence facilite la lecture.
>>> t = 3, True
>>> t
(3, True)
On peut créer un tuple vide ou un tuple ne contenant qu'un élément.
a = () # tuple vide
b = tuple() #tuple vide
c = (3,) # ne pas oublier la virgule
Définition par compréhension¶
La syntaxe est similaire à celle utilisée les tableaux. Il faut entourer l'expression par tuple(...)
.
>>> T = tuple(i ** 2 for i in range(1,4)) # carré des nombres de 1 à 3
>>> T
(1, 4, 9)
>>> T2 = tuple( x * 2 for x in 'abc') # duplique les caractères de la chaîne 'abc'
>>> T2
('aa', 'bb', 'cc')
>>> T3 = tuple( elem for elem in [2,3,5,6,7] if elem % 2 == 0) # Les éléments pairs de la liste.
>>> T3
(2,6)
Définition par transtypage¶
>>> T = tuple('abc')
>>> T
('a', 'b', 'c')
>>> T2 = tuple([1,2,3])
>>> T2
(1, 2, 3)
Accéder aux éléments¶
Comme pour les tableaux, on peut accéder aux éléments par leur indice. L'indice commence, comme pour les tableaux, à 0. La fonction len
retourne le nombre d'éléments.
>>> test = ('a','b','c')
>>> test[0]
'a'
>>> len(test)
3
Si l’on tente de modifier un élément d’un tuple, une erreur 'tuple' object does not support item assignment
est retournée.
C'est une erreur de type, car le type tuple est immutable. Il ne permet ni la modification d'un élément ni l'ajout d'un élément. On ne peut modifier un tuple qu'en l'assignant à nouveau.
>>> test = ('a','b','c')
>>> test[1] = 'd'
TypeError: 'tuple' object does not support item assignment
>>> test = (1,2,3)
>>> test
(1,2,3)
On peut concaténer des tuples:
>>> a = (1,2) + (3,4,5)
>>> a
(1,2,3,4,5)
Remarque
Concaténer des tuples est moins couteux que pour des tableaux.
On peut disperser des tuples. Ce qui est très pratique pour réaliser des affectations multiples.
>>> x,y,z = (1,2,3)
>>> x
1
>>> y
2
>>> z
3
Tests¶
On peut comparer les tuples avec les opérateurs ==
et !=
>>> (1, 2, 3) == (1, 2, 3)
True
>>> (1,2,3) != (1, 3, 2)
True
On peut déterminer si un élément appartient ou non a un tuple avec in
et not in
>>> 4 in (1, 2, 3)
False
>>> 1 in (1, 2, 3)
True
>>> 7 not in (1, 2, 3)
True
Parcours de tuples¶
Les tuples sont itérables comme pour les listes, ainsi on peut parcourir les tuples par indice ou par élément.
T = ('a', 'b', 'c')
for i in range(len(T)):
print(T[i], end=" ")
Ce programme affiche a b c
.
T = ('a', 'b', 'c')
for elem in T:
print(elem , end=" ")
Ce programme affiche aussi a b c
.
```
Fonctions et méthodes¶
Il existe de nombreuses fonctions et méthodes sur les tuples. Seules quelqu'unes seront présentées.
Fonctions¶
Pour les tuples contenant uniquement des nombres, c'est-à-dire du type int
ou float
.
Les fonctions sum
, min
et max
retournent respectivement la somme, le minimum et le maximum des éléments.
>>>T = (1, 5, 2)
>>>sum(T)
8
>>> min (T)
1
>>> max(T)
5
Méthodes¶
Les tuples étant immutables, il n'y a pas méthode similaire à la méthode append
pour les listes.
Les méthodes count(elem)
et index(elem)
retournent respectivement le nombre d'éléments et le premier indice de l'élément elem
dans un tuple.
>>> T = (1, 2, 5, 6, 2, 8)
>>> T.count(2) # Retourne le nombre de 2 dans le tuple T
2
>>> T.index(6) # Retourne l'indice du premier élément 6
3
Ce que vous connaissiez déjà sur les tuples sans le savoir:¶
- Faire un échange entre deux variables
>>> a = 4
>>> b = 6
>>> a,b = b,a # On peut écrire avec ou sans parenthèses.
>>> print(a,b)
6 4
- Lorsqu'on souhaite retourner plusieurs valeurs dans une fonction : le tuple peut être un type de données utilisé comme valeur de retour.
def min_max(a,b):
"""
Prend en entrée deux nombres et renvoie un couple
contenant en premier le plus petit des deux et
en second le plus grand
"""
if a > b:
return (b,a)
else:
return (a,b)
a = min_max(7,5)
print(a[0],a[1]) # affiche "5 7"
m, M = min_max(11,3)
print(m,M) # affiche "3 11"
Pour aller plus loin: