Exercices sur le tri

Tri suivant une colonne

Pour ces exercices, on utilisera toujours la liste notes suivante :

1
notes = [[8,12,9], [2,18,15], [14,13,17], [10,11,12]]

Question

Trier les listes de notes suivant le résultat obtenu par les élèves lors du dernier contrôle (ordre croissant).

Indice

On se rappellera comment obtenir le dernier élément d'une liste...

Solution

1
notes.sort(key= lambda x: x[-1])

Tri suivant une moyenne

Question

Trier les listes de notes en ordre croissant suivant la moyenne arithmétique de l'élève sur l'ensemble des contrôles.

Solution

1
notes.sort(key= lambda x: (x[0]+x[1]+x[2])/3)

Tri suivant une amplitude

L'amplitude pour les notes d'un élève est l'écart entre la plus grande note de l'élève et sa plus petite note.

Question

Trier les listes de notes en ordre croissant suivant l'amplitude des notes de l'élève sur les trois contrôles.

Indice

On pourra, pour simplifier, utiliser les fonctions python max et min.

Solution

1
notes.sort(key= lambda x:  max(x)-min(x))

Bonus : Tri mystère

Question

Quel pourrait être l'effet du code suivant sur la liste L :

1
>>> from random import randint
2
>>> t = len(L)
3
>>> L.sort(key= lambda x: randint(1, t))

Solution

Vous pouvez tester par exemple avec une liste de chaînes :

1
>>> from random import randint
2
>>> L = ["aha", "oh", "aïe", "zut", "zou", "charivari", "shadock"]
3
>>> t = len(L)
4
>>> L.sort(key= lambda x: randint(1, t))
5
>>> L

On associe un entier au hasard à chaque élément de la liste et on trie suivant l'ordre croissant de ces entiers. Cela revient à mélanger la liste.

Remarque

Pour mélanger une liste, le module random offre la fonction shuffle.