Aller au contenu
Structures

sorted, min, max

sorted, min et max trient ou extraient les extrêmes, et leur paramètre key choisit le critère : une colonne, une longueur, un calcul. C'est l'usage le plus courant des fonctions lambda.

  • tri
  • sorted
  • sort
  • key
  • reverse
  • min
  • max
  • map
  • filter

Syntaxe

Modèle
sorted(iterable, key=fonction, reverse=False)   # nouvelle listeliste.sort(key=fonction, reverse=False)          # tri sur placemin(iterable, key=fonction, default=valeur)max(iterable, key=fonction)

Exemple

Exemple concret
ventes = [("Lyon", 420), ("Paris", 980), ("Lille", 310), ("Nantes", 420)]par_ca = sorted(ventes, key=lambda v: v[1], reverse=True)print(par_ca[0])                              # → ('Paris', 980)print(max(ventes, key=lambda v: v[1])[0])     # → Parisprint(min(ventes, key=lambda v: v[1]))        # → ('Lille', 310)# Tri multicritère : CA décroissant, puis ville par ordre alphabétiqueprint(sorted(ventes, key=lambda v: (-v[1], v[0])))# → [('Paris', 980), ('Lyon', 420), ('Nantes', 420), ('Lille', 310)]print(max([], default=0))                     # → 0

À retenir

  1. sorted renvoie une nouvelle liste et accepte tout itérable ; liste.sort() modifie la liste et renvoie None. Le tri est stable : à critère égal, l'ordre d'origine est conservé.
  2. Pour un tri multicritère, renvoyez un tuple depuis key ; le signe moins inverse un critère numérique sans inverser les autres.
  3. map(f, l) et filter(cond, l) existent, mais une compréhension est généralement plus lisible : [f(x) for x in l if cond(x)]. operator.itemgetter(1) remplace avantageusement lambda v: v[1].
  4. Piège : max ou min sur une séquence vide lève ValueError. Passez default= quand la liste peut être vide, par exemple après un filtre.
  5. Piège : les chaînes se trient par code de caractère, donc "Zoé" passe avant "alice" et "Émile" après "zoé". key=str.casefold règle la casse ; les accents demandent une clé de normalisation (unicodedata) ou le module locale.

Voir aussi