Fonctions anonymes et fonctions intégrées essentielles en Python

Les fonctions anonymes et les fonctions intégrées constituent deux piliers fondamentaux de la programmation fonctionnelle en Python. Leur maîtrise permet d’écrire du code plus concis, expressif et réactif.

Fonctions anonymes avec lambda

Une fonction anonyme est une fnoction sans identifiant explicite, définie sur une seule ligne à l’aide du mot-clé lambda. Sa syntaxe suit le modèle : lambda paramètres: expression. Elle retourne automatiquement le résultat de l’expression — aucun return n’est requis.

Ces fonctions sont principalement utilisées comme arguments pour des fonctions d’ordre supérieur (ex. : map, filter, sorted) plutôt que comme entités autonomes.

Fonctions intégrées clés

1. map() — Transformation élémentaire

Applique une fontcion à chaque élément d’un itérable et renvoie un itérateur de résultats.

valeurs = [5, 12, 19, 27]
transformees = map(lambda x: x * 2 - 3, valeurs)
print(list(transformees))  # [7, 21, 35, 51]

2. max() / min() — Sélection conditionnelle

Lorsqu’on travaille avec des structures complexes (ex. : dictionnaires), l’argument key permet de spécifier une fonction d’extraction utilisée pour comparer les éléments. Le résultat reste l’élément original — pas sa valeur transformée.

scores = {'Alice': 84, 'Bob': 92, 'Claire': 76, 'Dana': 98}
meilleur = max(scores, key=lambda nom: scores[nom])
print(meilleur)  # 'Dana'

3. functools.reduce() — Agrégation séquentielle

Effectue une opération cumulative sur un itérable, réduisant celui-ci à une seule valeur. Nécessite l’import depuis functools.

from functools import reduce
nombres = [3, 6, 9, 12]
total = reduce(lambda acc, val: acc ** 2 + val, nombres)
print(total)  # ((3² + 6)² + 9)² + 12 = 1452

4. zip() — Groupement par position

Combine plusieurs itérables en créant des tuples contenant les éléments de même indice. La longueur du résultat correspond à celle du plus court itérable fourni.

ids = [101, 102, 103]
noms = ['Léo', 'Mia']
ages = [24, 29, 31]
groupes = list(zip(ids, noms, ages))
print(groupes)  # [(101, 'Léo', 24), (102, 'Mia', 29)]

5. filter() — Filtrage booléen

Génère un itérateur contenant uniquement les éléments pour lesquels la fonction fournie renvoie True.

valeurs = [-5, 0, 8, -12, 17, 3]
positifs = filter(lambda x: x > 0, valeurs)
print(list(positifs))  # [8, 17, 3]

6. sorted() — Tri flexible

Renvoie une nouvelle liste triée, sans modifier l’original. Prend en charge les arguments key et reverse.

mots = ['python', 'java', 'go', 'rust']
tri_par_longueur = sorted(mots, key=lambda s: len(s))
print(tri_par_longueur)  # ['go', 'java', 'rust', 'python']

Aperçu rapide d’autres fonctions intégrées utiles

  • abs(x) → valeur absolue
  • all(iterable)True si tous les éléments sont vrais
  • any(iterable)True si au moins un élément est vrai
  • bin(x), oct(x), hex(x) → conversion de base
  • bytes(obj, enc) → encodage binaire (ex. : UTF-8)
  • callable(obj) → vérifie si obj peut être invoqué
  • chr(n) / ord(c) → convresion entre code Unicode et caractère
  • dir(obj) → liste des attributs/méthodes accessibles
  • divmod(a, b) → tuple (a // b, a % b)
  • enumerate(iterable, start=0) → paires (index, valeur)
  • eval(expr) / exec(code) → exécution dynamique (à utiliser avec prudence)
  • hash(obj) → hachage immuable (utile pour les clés de dictionnaire)
  • id(obj) → identifiant mémoire unique
  • isinstance(obj, type) → test de type hiérarchique (gère l’héritage)
  • pow(base, exp, mod=None) → exponentiation (avec optionnel modulo)
  • range(start, stop, step) → générateur d’entiers
  • round(x, n) → arrondi à n décimales (suivant la règle « round half to even »)
  • sum(iterable) → somme arithmétique

Étiquettes: Python Lambda map filter reduce

Publié le 6 septembre à 05h43