Question 1Laquelle de ces déclarations est une tuple correcte ?
Utiliser les tuples Python (tuple)
Apprends à utiliser les tuples en Python pour regrouper plusieurs valeurs immuables et les déballer en une ligne.
Ce qu'est un tuple — la version « non modifiable » de list
Un tuple (tuple) te permet de regrouper plusieurs valeurs dans une seule variable. Il ressemble beaucoup au list vu dans l'article précédent, mais la différence clé, c'est qu'une fois créé, on ne peut plus changer son contenu.
Si une list est un contenant que tu prévois de réécrire (comme une liste de courses), un tuple est un contenant que tu fixes une bonne fois et que tu laisses tranquille — pense à des coordonnées (x, y) ou à une couleur RGB (255, 0, 0).
Seul le type de parenthèses et la possibilité de modifier diffèrent ; le rôle — regrouper plusieurs valeurs — est le même.
Si ça change, utilise list ; si ça reste fixe, utilise tuple est une règle simple.
Pour en déclarer un, il suffit d'entourer les valeurs de ( et ), séparées par des virgules. Là où une list utilise [ ], un tuple utilise ( ).
Accéder aux éléments (indexation et slicing) fonctionne exactement comme avec une list : [0] pour le premier, [-1] pour le dernier, [1:3] pour une tranche.
# Déclaration d'un tuple
fruits = ("apple", "banana", "lemon")
print(fruits) # ('apple', 'banana', 'lemon')
print(type(fruits)) # <class 'tuple'>
print(fruits[0]) # apple
print(fruits[-1]) # lemon
print(fruits[1:]) # ('banana', 'lemon') ← la tranche est aussi un tuple
# Les types mixtes fonctionnent
profile = ("Alice", 28, 165.5)
Un tuple à un seul élément a besoin d'une virgule finale
Si tu écris fruits = ("apple"), c'est une chaîne, pas un tuple. ( ) sert aussi de parenthèses mathématiques, donc Python ne peut pas faire la différence quand il n'y a qu'une seule valeur.
Pour créer un tuple d'un élément, ajoute une virgule finale : ("apple",).
Python te permet aussi d'omettre complètement les parenthèses et d'écrire 1, 2, 3 comme tuple, mais pour la lisibilité, garde les ( ).
Immuable — « réécrire un élément » et « changer de boîte » sont deux choses différentes
Un tuple est immuable (non modifiable). Une fois créé, tu ne peux pas écraser, ajouter ou supprimer ses éléments.
Là où beaucoup de gens s'emmêlent, c'est la différence entre « changer un élément » et « mettre un tout nouveau tuple dans la variable ». La première est interdite ; la deuxième est parfaitement OK.
t[0] = 9 essaie de modifier directement le contenu, donc c'est une erreur.
t = (4, 5, 6) pointe juste la variable vers un nouveau tuple, donc c'est OK.
Concaténation et méthodes (count / index)
Tu peux construire un nouveau tuple en joignant deux tuples. Utiliser + pour concaténer renvoie un tout nouveau tuple.
Il y a peu de méthodes — les deux que tu utiliseras vraiment sont count et index. Elles se comportent comme sur une list.
| Ce que tu veux faire | Comment l'écrire | Point clé |
|---|---|---|
| Concaténer | t1 + t2 | Renvoie un nouveau tuple ; les originaux ne changent pas |
| Ajouter un élément | t + (x,) | N'oublie pas la virgule finale |
| Compter des valeurs | t.count(x) | Combien de fois x apparaît |
| Trouver une position | t.index(x) | La première position où x apparaît |
fruits = ("apple", "banana", "lemon")
# Concaténer (renvoie un nouveau tuple)
more = fruits + ("grape",)
print(more) # ('apple', 'banana', 'lemon', 'grape')
print(fruits) # ('apple', 'banana', 'lemon') ← l'original est inchangé
# count et index
nums = (1, 2, 2, 3, 2, 4)
print(nums.count(2)) # 3 (il y a trois 2)
print(nums.index(3)) # 3 (3 est le 4e = index 3)
# Conversion entre list et tuple
list_fruits = list(fruits) # ['apple', 'banana', 'lemon']
tuple_fruits = tuple(list_fruits) # ('apple', 'banana', 'lemon')
Si tu veux continuer à modifier, convertis en list
Un tuple sert aux « valeurs qui bougent à peine », donc il est mal adapté quand tu dois ajouter et retirer des éléments souvent. Le motif standard : convertir en list avec list(t) → éditer → reconvertir avec tuple(...) si besoin.
Dépaquetage et clés de dict — ce que seul un tuple sait faire
Il y a deux choses qu'un tuple sait faire et qu'une list ne sait pas : le dépaquetage et l'utilisation comme clé de dict.
Mets des noms de variables séparés par des virgules à gauche, et chaque élément du tuple va directement dans sa propre variable.
La correspondance est position par position, et le nombre de variables doit égaler le nombre d'éléments.
# Dépaquetage
coord = (135.0, 35.0)
longitude, latitude = coord
print(longitude) # 135.0
print(latitude) # 35.0
# Tu peux aussi dépaqueter depuis un littéral
r, g, b = (255, 128, 0)
print(r, g, b) # 255 128 0
# Une astuce classique : échanger deux valeurs en une ligne
a, b = 1, 2
a, b = b, a
print(a, b) # 2 1
La valeur de retour d'une fonction est aussi un tuple (aperçu)
Une fonction Python peut renvoyer plusieurs valeurs avec return a, b, et celles-ci sont automatiquement emballées en tuple. Côté appelant, écrire x, y = func() les dépaquette en deux variables. Le chapitre sur les fonctions vient plus tard, donc on ne creuse pas ici — mais retenir que « plusieurs valeurs de retour et dépaquetage vont ensemble » rendra ce chapitre plus facile.
L'autre atout, c'est qu'un tuple peut servir de clé de dict. Une list ne peut pas être une clé de dict, mais un tuple oui. C'est pratique quand tu veux utiliser une combinaison de plusieurs valeurs comme une seule clé — par exemple, mapper des coordonnées vers un nom de pays.
# Un dict avec des clés tuple
country = {
(135.0, 35.0): "Japan",
(-77.0, 38.9): "USA",
}
print(country[(135.0, 35.0)]) # Japan
print(country.get((0.0, 0.0), "Inconnu")) # Inconnu
# Une list ne peut pas être une clé
# bad = {[135.0, 35.0]: "Japan"} # TypeError: unhashable type: 'list'
Dans cet article, autour des différences avec une list, tu as appris comment déclarer un tuple, ce que signifie l'immuabilité, la concaténation et count / index, et le dépaquetage et les clés de dict.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Soit t = (1, 2, 3), laquelle ne lève pas d'erreur ?
Question 3Pour coord = (135.0, 35.0), quelle est la façon la plus simple d'extraire ses deux valeurs dans les variables lng et lat ?