Menu
Français

Tuples Python : séquences immuables, déballage et tuples nommés

Quand utiliser un tuple plutôt qu'une liste — immutabilité, déballage, tuples nommés, et les scénarios pour lesquels les tuples sont faits.

Un tuple, c'est une liste qu'on ne peut pas changer

Les tuples et les listes se ressemblent à première vue — les deux sont des séquences ordonnées, les deux prennent en charge l'indexation et l'itération — mais une différence critique change tout : les tuples sont immuables. Une fois que tu crées un tuple, tu ne peux plus y ajouter, en retirer ou remplacer un élément.

Tu écris les tuples avec des parenthèses (ou parfois sans) :

main.py
Output
Click Run to see the output here.

Un tuple avec un seul élément a besoin d'une virgule finale, sinon Python traite les parenthèses comme un simple groupement :

main.py
Output
Click Run to see the output here.

Et pour les tuples vides, utilise () :

main.py
Output
Click Run to see the output here.

L'immutabilité, en pratique

Essaie de changer un tuple et Python t'arrête :

main.py
Output
Click Run to see the output here.

Tu peux lire un tuple librement — indexation, découpage, itération, in — tu ne peux juste pas le modifier. Si tu as besoin d'un tuple différent, tu en crées un nouveau.

Pourquoi vouloir quelque chose qu'on ne peut pas changer ?

L'immutabilité ressemble à une limitation, mais c'est souvent la fonctionnalité que tu veux.

  1. Sécurité. Un tuple que tu passes à une fonction ne peut pas être muté dans ton dos.
  2. Hashabilité. Les tuples de valeurs immuables peuvent être utilisés comme clés de dictionnaire ou membres d'ensemble ; les listes, non.
  3. Intention. Un tuple dit « c'est un enregistrement de forme fixe ». point = (3, 4) communique « deux coordonnées » plus clairement que point = [3, 4].

Les tuples brillent pour des choses comme :

  • Coordonnées : (x, y), (lat, lon)
  • Couleurs RGB : (255, 128, 0)
  • Enregistrements : (name, email, signup_date)
  • Renvoyer plusieurs valeurs depuis une fonction

Déballage

Les tuples et la syntaxe de déballage sont faits l'un pour l'autre :

main.py
Output
Click Run to see the output here.

La virgule à gauche est ce qui fait le déballage. Python voit deux noms et un tuple avec deux valeurs, et il les lie par paires.

C'est partout dans le Python idiomatique :

main.py
Output
Click Run to see the output here.

Tu peux utiliser * pour récupérer « le reste » :

main.py
Output
Click Run to see the output here.

Pratique quand tu te soucies seulement du premier et du dernier élément.

Tuples comme clés de dictionnaire

Parce que les tuples sont hashables (tant que leur contenu l'est), tu peux les utiliser comme clés de dict. Les listes ne peuvent pas faire ça :

main.py
Output
Click Run to see the output here.

Ce motif — clé composée de plusieurs valeurs — est étonnamment utile. Pense : « le score pour l'utilisateur X au jour Y » ou « le meilleur itinéraire de A à B ».

Tuples pour valeurs de retour multiples

Une fonction qui a besoin de retourner plus d'une chose renvoie généralement un tuple :

main.py
Output
Click Run to see the output here.

Le divmod() intégré de Python fait exactement ça. L'affectation par déstructuration du côté appelant rend ça naturel à lire.

Tuples nommés, quand la position ne suffit pas

Dès que tes tuples dépassent deux ou trois éléments, se souvenir quelle position veut dire quoi devient pénible. collections.namedtuple corrige ça :

main.py
Output
Click Run to see the output here.

Maintenant les éléments du tuple ont des noms. C'est toujours immuable, toujours un tuple (donc déballage et indexation marchent), mais le motif d'accès est bien plus sympa. Pour quelque chose de plus complexe, il y a dataclasses — on y reviendra plus tard dans le chapitre sur les classes.

Tuple vs liste : un guide de décision rapide

  • Forme fixe, chaque position a un sens → tuple.
  • Une collection qui peut grandir ou rétrécir → liste.
  • Renvoyer plusieurs valeurs depuis une fonction → tuple.
  • Besoin d'une clé de dict ou d'un membre de set → tuple (la liste ne marchera pas).
  • Tu vas le muter → liste (le tuple ne te laissera pas faire).

On avance

Les tuples couvrent un bout du spectre : fixe, petit, structuré. Ensuite : les ensembles, qui couvrent un boulot complètement différent — vérification d'appartenance rapide et unicité.

Questions fréquentes

Qu'est-ce qu'un tuple en Python ?

Un tuple est une séquence ordonnée et immuable — comme une liste, mais une fois créé tu ne peux plus ajouter, retirer ou changer ses éléments. Tu écris les tuples avec des parenthèses : point = (3, 4).

Quelle est la différence entre un tuple et une liste ?

Les deux sont des séquences ordonnées. Les listes sont mutables — tu peux les changer après création — alors que les tuples sont immuables. Les tuples sont typiquement utilisés pour de petites collections de valeurs qui vont ensemble comme un seul « enregistrement », comme des coordonnées ou les valeurs de retour multiples d'une fonction.

Quand utiliser un tuple ?

Utilise un tuple quand tu as un enregistrement de taille fixe où chaque position a une signification — coordonnées, couleurs RGB, une ligne de base de données. Utilise aussi les tuples comme clés de dictionnaire ou membres d'ensemble, puisque les listes ne peuvent pas servir là. Pour tout le reste où la collection pourrait grandir ou rétrécir, les listes sont le défaut.

Apprendre à coder avec Coddy

COMMENCER