Aller au contenu principal

Informatique · Première · 4 min de lecture

p-uplets : regrouper plusieurs valeurs

Un p-uplet (tuple en Python) regroupe un nombre fixé de valeurs, éventuellement de types différents, accessibles par leur indice et non modifiables ; une fonction peut renvoyer plusieurs valeurs sous forme d'un p-uplet et l'appelant les récupère par affectation multiple ; un p-uplet nommé associe un nom à chaque champ (en Python, on l'implémente par un dictionnaire).

Chapitre du programme : Numérique et sciences informatiques (spécialité)

Bloc 1 sur 7 · Comprendre

Comprendre : une suite fixe de valeurs

Un p-uplet (en Python, un tuple) regroupe un nombre fixé de valeurs, qui peuvent être de types différents. On l'écrit entre parenthèses, les valeurs séparées par des virgules. On lit chaque valeur par son indice, qui commence à 0.

p = (3, "Alice", 15.5)
print(p[0], p[1], p[2])
print(len(p))
print(p)
3 Alice 15.5
3
(3, 'Alice', 15.5)

Un p-uplet n'est pas modifiable : une fois créé, on ne peut ni changer, ni ajouter, ni retirer un élément.

p = (3, "Alice", 15.5)
p[0] = 5
TypeError: 'tuple' object does not support item assignment

Bloc 2 sur 7 · Approfondir

Approfondir : renvoyer plusieurs valeurs

Une fonction peut renvoyer un p-uplet. return a // b, a % b renvoie le p-uplet (quotient, reste). L'appelant récupère ses valeurs par affectation multiple : la première valeur va dans la première variable, la deuxième dans la deuxième.

def division(a, b):
    return a // b, a % b

print(division(47, 5))
q, r = division(47, 5)
print(q, r)
(9, 2)
9 2

Le nombre de variables à gauche doit être égal au nombre de valeurs du p-uplet :

a, b = (1, 2, 3)
ValueError: too many values to unpack (expected 2)

p-uplet nommé. Quand chaque valeur a un rôle précis, on lui donne un nom de champ plutôt qu'un indice. En Python, on l'implémente par un dictionnaire : on lit un champ par son nom.

eleve = {"nom": "Alice", "classe": "A", "note": 14}
print(eleve["nom"], eleve["note"])
Alice 14

Bloc 3 sur 7 · Exemple

Exemple guidé : quotient et reste

Énoncé. Quel nombre ce programme affiche-t-il ?

def division(a, b):
    return a // b, a % b

q, r = division(47, 5)
print(10 * q + r)

Résolution.

  1. division(47, 5) renvoie le p-uplet (47 // 5, 47 % 5) = (9, 2) : 47 = 5 × 9 + 2.
  2. L'affectation multiple donne q = 9 et r = 2.
  3. Le programme affiche 10 × 9 + 2 = 92.
92

Même méthode avec les extrêmes d'un tableau. extremes renvoie (plus petit, plus grand) ; ici (2, 9), donc grand − petit = 7.

def extremes(t):
    return min(t), max(t)

petit, grand = extremes([4, 9, 2, 7, 5])
print(grand - petit)
7

Bloc 4 sur 7 · Visualiser

Voir : indices d'un p-uplet et affectation multiple

Pour p = (4, 7, 2) :

Tableau : Indice, 0, 1, 2
Indice012
Valeur472

Ainsi p[1] × p[2] + len(p) = 7 × 2 + 3 = 17.

p = (4, 7, 2)
print(p[1] * p[2] + len(p))
17

L'affectation q, r = (9, 2) range les valeurs dans l'ordre : q reçoit la valeur d'indice 0, r celle d'indice 1.

Continuez sur votre lancée

Vous avez découvert l’essentiel et un exemple. Retrouvez la suite du cours et les points à retenir, puis passez à l’entraînement guidé dans votre compte.

  • Les formules et les repères à retenir
  • Les erreurs fréquentes expliquées
  • Un exercice avec des aides et sa correction

L’accès gratuit comprend les cours et exercices de votre niveau choisi.

Sources

  • BO spécial n°1 du 22 janvier 2019 — programme de spécialité numérique et sciences informatiques de première générale, annexe (https://cache.media.education.gouv.fr/file/SP1-MEN-22-1-2019/26/8/spe633_annexe_1063268.pdf) — « Représentation des données : types construits », p-uplets, p-uplets nommés
  • Documentation officielle de Python 3, The Python Language Reference et The Python Standard Library (https://docs.python.org/3/) — The Python Tutorial, « Tuples and Sequences » ; The Python Standard Library, « Sequence Types — list, tuple, range »

Vous pensez avoir trouvé une erreur dans cette leçon ? Signalez-la par e-mail.

Explorer les autres cours

Accès rapide