Partie 1 : Les p-uplets (tuples)
1. Qu'est-ce qu'un p-uplet ?
Section intitulée « 1. Qu'est-ce qu'un p-uplet ? »1.1 Définition
Section intitulée « 1.1 Définition »Un p-uplet (ou tuple en anglais) est une collection ordonnée et non modifiable de valeurs. On dit qu'un tuple est immuable (immutable).
>>> coordonnees = (3, 7)>>> couleur_rgb = (255, 128, 0)>>> eleve = ("Dupont", "Marie", 16)Un p-uplet peut contenir des éléments de types différents : entiers, flottants, chaînes, booléens, etc.
1.2 Vocabulaire
Section intitulée « 1.2 Vocabulaire »Le nom « p-uplet » vient de la généralisation des mots courants :
| Nombre d'éléments | Nom |
|---|---|
| 2 | couple (ou paire) |
| 3 | triplet |
| 4 | quadruplet |
| n | n-uplet |
| p | p-uplet (cas général) |
1.3 Syntaxe en Python
Section intitulée « 1.3 Syntaxe en Python »On crée un tuple avec des parenthèses (ou même sans, grâce à la virgule) :
>>> t1 = (1, 2, 3)>>> t2 = 1, 2, 3 # les parenthèses sont facultatives>>> t3 = (42,) # tuple d'un seul élément : la virgule est obligatoire>>> t4 = () # tuple vide>>> type(t1)<class 'tuple'>2. Accéder aux éléments
Section intitulée « 2. Accéder aux éléments »2.1 Indexation
Section intitulée « 2.1 Indexation »Comme pour les chaînes de caractères, on accède aux éléments par leur indice (en commençant à 0) :
>>> eleve = ("Dupont", "Marie", 16)>>> eleve[0]'Dupont'>>> eleve[1]'Marie'>>> eleve[2]16Les indices négatifs permettent de compter depuis la fin :
>>> eleve[-1]16>>> eleve[-2]'Marie'2.2 Longueur
Section intitulée « 2.2 Longueur »La fonction len() renvoie le nombre d'éléments :
>>> len(eleve)32.3 Parcours
Section intitulée « 2.3 Parcours »On peut parcourir un tuple avec une boucle for :
couleurs = ("rouge", "vert", "bleu")for c in couleurs: print(c)3. Immuabilité
Section intitulée « 3. Immuabilité »Un tuple est non modifiable : on ne peut ni ajouter, ni supprimer, ni modifier un élément.
>>> point = (3, 7)>>> point[0] = 5TypeError: 'tuple' object does not support item assignmentC'est la différence fondamentale avec les listes (tableaux), qui sont modifiables.
4. Déballage (unpacking)
Section intitulée « 4. Déballage (unpacking) »On peut affecter chaque élément d'un tuple à une variable en une seule ligne. C'est le déballage (unpacking) :
>>> coordonnees = (3, 7)>>> x, y = coordonnees>>> x3>>> y7Le nombre de variables doit correspondre au nombre d'éléments :
>>> nom, prenom, age = ("Dupont", "Marie", 16)>>> print(f"{prenom} {nom}, {age} ans")Marie Dupont, 16 ans5. Fonctions renvoyant un tuple
Section intitulée « 5. Fonctions renvoyant un tuple »Un tuple est le moyen naturel de renvoyer plusieurs valeurs depuis une fonction :
def min_max(liste): """Renvoie le minimum et le maximum d'une liste.""" return (min(liste), max(liste))
resultat = min_max([4, 7, 1, 9, 3])print(resultat) # (1, 9)
# Avec déballage :petit, grand = min_max([4, 7, 1, 9, 3])print(petit) # 1print(grand) # 9Autre exemple :
def division_euclidienne(a, b): """Renvoie le quotient et le reste de a divisé par b.""" return (a // b, a % b)
q, r = division_euclidienne(17, 5)print(f"17 = 5 x {q} + {r}") # 17 = 5 x 3 + 26. Opérations sur les tuples
Section intitulée « 6. Opérations sur les tuples »Même si un tuple est immuable, certaines opérations sont possibles car elles créent un nouveau tuple :
>>> (1, 2) + (3, 4) # concaténation(1, 2, 3, 4)
>>> (1, 2) * 3 # répétition(1, 2, 1, 2, 1, 2)
>>> 3 in (1, 2, 3, 4) # appartenanceTrue
>>> (1, 2, 3).index(2) # position d'un élément1
>>> (1, 2, 2, 3, 2).count(2) # nombre d'occurrences37. P-uplets nommés
Section intitulée « 7. P-uplets nommés »7.1 Problème
Section intitulée « 7.1 Problème »Avec un tuple classique, il faut se souvenir de la position de chaque information :
eleve = ("Dupont", "Marie", 16, "1ere3")# eleve[0] = nom ? prenom ? On ne sait plus...7.2 Solution : les p-uplets nommés
Section intitulée « 7.2 Solution : les p-uplets nommés »Python propose les namedtuples du module collections, qui associent un nom à chaque champ :
from collections import namedtuple
Eleve = namedtuple("Eleve", ["nom", "prenom", "age", "classe"])
e = Eleve("Dupont", "Marie", 16, "1ere3")
print(e.nom) # Dupontprint(e.prenom) # Marieprint(e.age) # 16print(e.classe) # 1ere3On accède aux champs par leur nom (plus lisible) tout en conservant l'accès par indice :
>>> e[0]'Dupont'>>> e.nom'Dupont'7.3 Avantages
Section intitulée « 7.3 Avantages »- Le code est plus lisible :
e.nomest plus clair quee[0]. - Le tuple reste immuable : on ne peut pas modifier
e.nom. - On peut l'utiliser comme un tuple classique (parcours, déballage, etc.).
8. Résumé
Section intitulée « 8. Résumé »| Propriété | Tuple |
|---|---|
| Syntaxe | (a, b, c) ou a, b, c |
| Ordonné | Oui (indice 0, 1, 2...) |
| Modifiable | Non (immuable) |
| Types mélangés | Oui |
| Accès par indice | t[0], t[-1] |
| Déballage | x, y = (3, 7) |
| Usage principal | Renvoyer plusieurs valeurs, données constantes |
| P-uplet nommé | namedtuple : accès par nom (e.prenom) |
© 2026 Corentin Dupont - LyCode
Créé avec Astro Starlight