Numérique et sciences informatiques (spécialité) · Première
Tri d'une table : quiz de Première NSI
Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur
L'essentiel
sorted(t)renvoie une nouvelle liste triée et laissetintacte ;t.sort()trietsur place et renvoieNone.- Pour trier une table de dictionnaires ou de tuples, on passe une fonction à
keyqui extrait le critère (lambda e: e['note']). reverse=Trueinverse l'ordre ; une clé qui est un tuple(critère1, critère2)départage les égalités.- Les valeurs lues dans un fichier CSV sont des chaînes : il faut les convertir (
int,float) avant de trier, sinon l'ordre est alphabétique. - Le tri par sélection place le minimum en tête à chaque passage ; le tri par insertion agrandit un début de liste déjà trié.
Avant de commencer
Ce quiz porte sur le tri d'une table, c'est-à-dire sur la façon de ranger les lignes d'un tableau de données selon la valeur d'une colonne. Il s'inscrit dans la partie du programme de NSI de Première consacrée au traitement des données en tables.1 Tu y croiseras les fonctions de tri de Python, le choix de la clé de tri, le tri sur plusieurs critères, les pièges des données lues dans un fichier CSV et le déroulement à la main de deux algorithmes classiques, le tri par sélection et le tri par insertion.
Tu as déjà vu comment indexer une table et la parcourir pour y faire une recherche. Ici, on va plus loin : on veut que la table soit rangée, par exemple pour afficher un classement ou pour préparer une recherche plus rapide.
Quiz
16 questions · correction immédiate · ton score reste sur ton appareil.
-
sortedconstruit une nouvelle liste, qui est rangée dansr. La listenotesn'est pas touchée et reste[14, 9, 14, 17]. Répondre[9, 14, 14, 17]est l'erreur tentante : c'est la valeur der, pas celle denotes.Noneserait le résultat de la méthodesort, pas de la fonctionsorted. -
La méthode
sorttrienotessur place et ne renvoie rien :rvaut doncNone. C'estnotesqui est devenue[9, 14, 14, 17]. Penser quercontient la liste triée revient à confondresortetsorted. Aucune erreur n'est levée, ce qui rend ce piège discret : on ne le voit qu'en utilisantrplus loin. -
Par ordre croissant de note, Tom (9) vient en premier. Léa et Ana ont toutes deux 14 : comme elles gardent leur ordre d'origine, Léa passe avant Ana. Léa est donc en deuxième position. Répondre Ana serait supposer un classement alphabétique, que ce code ne demande pas ; pour l'obtenir, il faudrait une clé à deux critères.
-
L'ordre décroissant donne
r = [17, 14, 14, 9]. L'indice 1 désigne le deuxième élément, qui vaut 14. Si tu as trouvé 17, tu as lu l'indice 0 ; si tu as trouvé 9, tu as sans doute lu l'ordre croissant. -
C'est faux :
sortedrenvoie une nouvelle liste et laissettelle quelle. C'est la méthodet.sort()qui modifiet. On choisitsortedquand on veut garder la table d'origine, par exemple pour afficher deux classements différents à partir des mêmes données. -
Les trois premières donnent un ordre décroissant :
reverse=Trueinverse le sens, la clé-e['note']range par opposé de la note, et[::-1]retourne la liste triée par ordre croissant. La dernière est fausse : sanskey, Python doit comparer des dictionnaires entre eux, ce qui provoque une erreur de type (TypeError). Remarque aussi que[::-1]inverse l'ordre des ex æquo, alors quereverse=Trueles garde dans leur ordre d'origine. -
Dans un tuple
('Léa', 14), la note est à l'indice 1 :lambda e: e[1]l'extrait. Avece[0], on trierait par nom.key=1donne une erreur carkeyattend une fonction, pas un entier, etkey=e[1]fait référence à une variableequi n'existe pas à cet endroit. -
Python compare les chaînes caractère par caractère d'après leur code, et toutes les majuscules ont un code inférieur à celui des minuscules.
'Banane'passe donc avant'abricot', puis vient'pomme'. L'ordre['abricot', 'Banane', 'pomme']est celui du dictionnaire, que tu attends naturellement, mais qui n'est pas celui du tri par défaut. Pour l'obtenir, on pourrait trier aveckey=str.lower. -
Les chaînes sont comparées caractère par caractère :
'10'est un début de'100', donc il le précède, et le premier caractère'1'est inférieur à'9', donc'9'arrive en dernier. Le résultat est['10', '100', '9']. L'ordre['9', '10', '100']est celui des nombres : pour l'obtenir, il faut trier aveckey=int, ou convertir les valeurs au moment de la lecture. -
Le minimum est 1, à l'indice 4. On l'échange avec l'élément d'indice 0, qui vaut 6 : la liste devient
[1, 3, 2, 5, 6]. La somme des trois premiers éléments vaut 1 + 3 + 2 = 6. Une confusion fréquente est de croire que tout le tableau est trié après un seul passage : seul le premier élément est à sa place définitive. -
Le début
[4]est déjà trié. On insère 2 devant 4 :[2, 4, 5, 1]. On insère ensuite 5, qui est plus grand que 4 et reste donc à sa place. Le dernier élément 1 n'a pas encore été traité, la liste est[2, 4, 5, 1]. Le résultat[1, 2, 4, 5]correspond à la fin de l'algorithme, pas à cette étape. -
Les tuples sont comparés d'abord sur la note, puis sur le nom en cas d'égalité. L'ordre est donc Tom (9), Ana (14), Léa (14), Ugo (17), car Ana précède Léa dans l'ordre alphabétique. Léa serait la réponse si la clé ne comportait que la note, puisque le tri conserve alors l'ordre d'origine.
-
C'est vrai. Le signe moins range d'abord les notes les plus hautes : Ugo (17) est premier. Léa et Ana ont la même note 14, donc le second terme du tuple les départage dans l'ordre alphabétique : Ana précède Léa. Tom (9) termine. On obtient ainsi un classement décroissant par note, avec les ex æquo en ordre alphabétique.
-
Python sait comparer deux nombres entre eux ou deux chaînes entre elles, mais pas un entier avec une chaîne : une erreur de type est levée. C'est ce qui arrive quand une colonne mélange des nombres et du texte, par exemple à cause d'une cellule mal saisie. Il faut alors nettoyer ou convertir les valeurs avant de trier.
-
Les longueurs sont 4, 8, 4 et 4. Les trois mots de 4 lettres passent avant
'éléphant', et gardent leur ordre d'origine :'chat','ours','lion'. Le deuxième est donc'ours'. Le mot'éléphant', le plus long, termine la liste. -
C'est faux. La dichotomie compare la valeur cherchée à celle du milieu pour décider dans quelle moitié continuer : ce raisonnement n'a de sens que si les valeurs sont rangées. Sur une table non triée, on peut écarter à tort la moitié qui contient la valeur. C'est l'une des raisons de trier une table avant de la parcourir.
Les questions qu'on se pose
Quelle est la différence entre sorted et sort ?
sorted(t) renvoie une nouvelle liste triée et ne change pas t. t.sort() trie t sur place et renvoie None. Si tu veux conserver la table d'origine, prends sorted ; si tu n'en as plus besoin sous sa forme initiale, sort suffit. Écris t.sort() seul sur sa ligne, jamais t = t.sort().
Comment trier selon une colonne d'une table lue depuis un CSV ?
Donne à key une fonction qui extrait la colonne, par exemple key=lambda e: e['age']. Si la colonne contient des nombres, convertis-les : key=lambda e: int(e['age']). Sans cette conversion, les valeurs sont des chaînes et l'ordre est alphabétique : '9' passerait après '100'.
Sources
- NSI Première - Traitement de données en tables : opérations (académie Lyon), Académie de Lyon. Consulté le 6 novembre 2026.
- Table de tri, Wikipédia. Consulté le 6 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.