Tri d’une liste ‘simple’
Pour trier une liste il existe une méthode ‘native’ : L.sort(), L étant la liste à trier.
Par défaut le tri s’effectue par ordre croissant. Pour un tri par ordre décroissant il faut ajouter un paramètre à la méthode sort() : L.sort(reverse=True).
Tester dans la console :
In [1]: L = [32, 54, 89, 47, 12, 52, 64, 39, 5, 1, 99, 83]
In [2]: L.sort()
In [3]: L
Out[3]: [1, 5, 12, 32, 39, 47, 52, 54, 64, 83, 89, 99]
In [4]: L.sort(reverse=True)
In [5]: L
Out[5]: [99, 89, 83, 64, 54, 52, 47, 39, 32, 12, 5, 1]
Tri d’une liste de listes (1)
1 – Télécharger le fichier ‘csv’ suivant : liste_films.csv.
2 – Dans un éditeur de langage Python, écrire les instructions qui permettent de construire une table à partir des données contenues dans ce fichier ‘csv’.
Des difficultés ? Coup de pouce…
Une solution… et auto-évaluation
3 – Examiner les dix premiers enregistrements de la table ‘table_films’ : les enregistrements paraissent-ils triés ? Si oui, selon quel(s) attribut(s) ?
for indexE in range(10):
print(table_films[indexE][0].ljust(25),table_films[indexE][1].ljust(40),
table_films[indexE][2].ljust(15),table_films[indexE][3].ljust(10))
Lune de miel Elise Otzenberger Comédie 12/06/19
J'veux du soleil François Ruffin, Gilles Perret Documentaire 03/04/19
L'Étreinte Ludovic Bergery Drame 19/05/21
Teresa de Jesus Lionel Baillemont Drame 30/06/21
Lourdes Thierry Demaizière et Alban Teurlai ** NC ** 08/05/19
Fille du vent Malec Démiaro ** NC ** 22/01/20
Soul Kids Hugo Sobelman Documentaire 24/11/21
Les Amours d'Anaïs Charline Bourgeois-Tacquet Comédie 15/09/21
À cause des filles..? Pascal Thomas Comédie 30/01/19
Médecin de nuit Élie Wajeman Thriller 16/06/21
Essayons de trier une table avec la méthode précédente : T.sort() ou T est une table.
4 – Tester dans la console : table_films.sort().
5 – Examiner les dix premiers enregistrements de la table ‘table_films’ : les enregistrements paraissent-ils triés ? Si oui, selon quel(s) attribut(s) ?
A partir des constats, noter ce qu’il est possible de retenir du tri d’une table (liste de listes) effectué avec la méthode « sort() » sans paramètre.
Tri d’une liste de listes (2)
Il est possible de vouloir trier une table (liste de listes) selon un attribut particulier.
Il faut alors s’intéresser au paramètre ‘key’ de la méthode ‘.sort()’.
Ce paramètre prend une fonction comme valeur.
En Python – comme dans d’autres langages – il est possible de faire appel à une ‘fonction anonyme‘.
Pour cela, en Python, on utilise l’expression ‘lambda’.
6 – Tester dans la console : table_films.sort(key = lambda x : x[2]).
7 – Examiner les dix premiers enregistrements de la table ‘table_films’ : les enregistrements paraissent-ils triés ? Si oui, selon quel(s) attribut(s) ?
A partir des constats, noter ce qu’il est possible de retenir du tri d’une table (liste de listes) effectué avec la méthode « sort() » et le paramètre ‘key = lambda x : x[n]’, tel que n est un entier, et 0 ≤ n < len(E), E étant un enregistrement d’une table T.
Tri d’une liste de listes (3)
Il est possible de vouloir trier une table (liste de listes) selon deux ou plusieurs attributs particuliers.
Il faut alors s’intéresser au paramètre ‘key’ de la méthode ‘.sort()’.
Ce paramètre prend une fonction comme valeur.
En Python, considérons le module ‘itemgetter‘ de la bibliothèque ‘operator‘.
8 – Tester dans la console :
from operator import itemgetter
table_films.sort(key=itemgetter(1,0))
9 – Examiner les dix premiers enregistrements de la table ‘table_films’ : les enregistrements paraissent-ils triés ? Si oui, selon quel(s) attribut(s) ?
A partir des constats, noter ce qu’il est possible de retenir du tri d’une table (liste de listes) effectué avec la méthode « sort() » et le paramètre ‘key = itemgetter(n,m)’, tel que n et m sont des entiers, et 0 ≤ n, m < len(E), E étant un enregistrement d’une table T.
Exercice – Les prénoms des enfants nés à Angers (le retour)
A partir de la table construite à partir du fichier ‘csv’, écrire une version 2 de la fonction ‘top10(table)’ en utilisant une des méthodes de tri d’une table.