Chapitre 9 - Tuples#
Définition#
Un tuple est un ensemble ordonné et immuable d’éléments (il est aussi appelé n-uplet dans la documentation Python). Le nombre, l’ordre et la valeur des éléments sont fixes.
Création de tuples#
Avec des parenthèses :
tuple_vide = ()
tuple_à_un_élement = (1,) # notez la virgule
tuple_à_deux_éléments = (1, 2) # on dit aussi: "couple"
Sauf pour le tuple vide, c’est la virgule qui fait le tuple.
Note : tous les tuples sont truthy, sauf les tuples vides.
Tuples hétérogènes#
Comme les listes, les tuples peuvent contenir des éléments de types différents :
# Un entier et une string
mon_tuple = (42, "bonjour")
# Un entier et un autre tuple
mon_tuple = (21, (True, "au revoir"))
Accès#
Avec []
et l’index de l’élément dans le tuple :
mon_tuple = (42, "bonjour")
print(mon_tuple[0])
# affiche: 42
print(mon_tuple[1])
# affiche: "bonjour"
Modification#
C’est interdit :
mon_tuple = (42, "bonjour")
mon_tuple[0] = 44
# erreur: TypeError: 'tuple' object does not support item assignment
Test d’appartenance#
Avec in
:
mon_tuple = (42, 14)
print(42 in mon_tuple)
# affiche: True
print(14 in mon_tuple)
# affiche: True
print(13 in mon_tuple)
# affiche: False
Dissociation#
Créer plusieurs variables, à partir d’un tuple, en une seule ligne :
couple = ("Batman", "Robin")
héros, side_kick = couple
print(héros)
# affiche: Batman
print(side_kick)
# affiche: Robin
Quelques erreurs classiques#
héros, side_kick, ennemi = couple
# erreur: ValueError (3 != 2)
(héros,) = couple
# erreur: ValueError (1 != 2)
# Gare à la virgule:
héros, = couple
# erreur: ValueError (1 != 2)
Pièges#
f(a, b, c) # appelle f() avec trois arguments
f((a, b, c)) # appelle f() avec un seul argument
# (qui est lui-même un tuple de 3 valeurs)
f(()) # appelle f() avec un tuple vide
(a) # juste la variable a entre parenthèses
(a,) # un tuple à un élément, qui vaut la valeur de a
On peut aussi déstructurer des listes :
fruits = ["pomme", "banane", "orange"]
premier, deuxième, troisième = fruits
print(premier)
# affiche: pomme
print(deuxième)
# affiche: banane
print(troisième)
# affiche: orange
On dit aussi dissociation ou unpacking.
Utilisations des tuples#
Pour simplifier des conditions :
# Avant:
if (
ma_valeur == "nord" or
ma_valeur == "sud" or
ma_valeur == "ouest" or
ma_valeur == "est"):
print("direction", ma_valeur)
# Après:
if ma_valeur in ("nord", "sud", "est", "ouest"):
print("direction", ma_valeur)
Pour retourner plusieurs valeurs :
def tire_carte():
valeur = "10"
couleur = "trèfle"
return (valeur, couleur)
v, c = tire_carte()
print(v, "de", c)
# affiche: 10 de trèfle
Ce n’est pas une nouvelle syntaxe, juste de la manipulation de tuples !