Aller au contenu
Fonctions

lambda

lambda crée une petite fonction anonyme réduite à une seule expression. Elle sert surtout à passer un critère à sorted, min, max ou à une méthode pandas, là où une def serait disproportionnée.

  • anonyme
  • expression
  • tri
  • key
  • fonction courte

Syntaxe

Modèle
lambda param1, param2: expression

Exemple

Exemple concret
eleves = [("Ana", 14), ("Bob", 8), ("Chloé", 17)]print(sorted(eleves, key=lambda e: e[1]))  # → [('Bob', 8), ('Ana', 14), ('Chloé', 17)]print(max(eleves, key=lambda e: e[1])[0])  # → Chloéprint(sorted(["Lyon", "Paris", "Nice"], key=lambda v: len(v)))  # → ['Lyon', 'Nice', 'Paris']

À retenir

  1. lambda x: x * 2 équivaut à def f(x): return x * 2, sans nom : une seule expression, pas de return, pas d'affectation.
  2. Piège : affecter une lambda à une variable (tva = lambda ht: ht * 1.2) cache son nom dans les messages d'erreur. Dès qu'une fonction a un nom, écrivez une def (recommandation de la PEP 8).
  3. Piège : dans une boucle, une lambda capture la variable et non sa valeur du moment : [lambda: i for i in range(3)] donne trois fonctions qui renvoient toutes 2. Figez la valeur avec lambda i=i: i.
  4. Pour extraire un champ, operator.itemgetter(1) ou operator.attrgetter("note") sont plus explicites qu'une lambda.

Voir aussi