Logique de
Programmation

Fonctions lambda, map et filter

Fonction lambda

Une fonction lambda est une fonction anonyme qui peut avoir n'importe quel nombre d'arguments, mais ne peut avoir qu'une seule expression. Elle prend la forme lambda arguments: expression. Par exemple, si l'on veut définir une fonction qui retourne le carré d'un nombre, on peut utiliser une fonction lambda comme suit:

Python

Une fonction lambda peut également prendre plusieurs arguments. Par exemple, si l'on veut définir une fonction qui retourne la somme de deux nombres, on peut utiliser une fonction lambda comme suit:

Python

Peut-être que nous voyez pas l'intérêt de cette fonctionnalité comparé aux fonctions normales. En effet, les fonctions lambda sont souvent utilisées en conjonction avec les fonctions map et filter que nous allons voir dans un instant pour effectuer des opérations sur des listes.

La fonction map

La fonction map permet d'appliquer une fonction à chaque élément d'une liste. Elle prend la forme map(fonction, liste). Par exemple, si l'on veut appliquer notre fonction carre qui prend un élément et retourne son carré à chaque élément d'une liste, on peut utiliser la fonction map comme suit:

Python

Ici, la fonction carre est appliquée à chaque élément de la liste [1, 2, 3, 4, 5] et le résultat est stocké dans un objet map. Pour obtenir le résultat sous forme de liste, on utilise la fonction list pour convertir l'objet map en liste.

Il faut noter que la fonction utilisée doit prendre un seul argument et retourner un résultat. Au lieu de définir une fonction carre séparément, on peut utiliser une fonction lambda pour définir la fonction directement dans l'appel à map. Cela rend le code plus concis et plus lisible.

Python

La fonction filter

La fonction filter permet de filtrer les éléments d'une liste en fonction d'une fonction de test. Similaire à la fonction map, elle prend la forme filter(fonction, liste). Par exemple, si l'on veut filtrer les éléments pairs d'une liste, on peut utiliser la fonction filter comme suit:

Python

Il faut noter que la fonction utilisée doit prendre un seul argument et retourner un résultat booléen. Ici, la fonction est_pair retourne True si l'élément est pair et False sinon. Le résultat est stocké dans un objet filter qui peut être converti en liste en utilisant la fonction list. Tout comme avec la fonction map, on peut utiliser une fonction lambda pour définir la fonction de test directement dans l'appel à filter.

Python

Différence avec la compréhension de liste

Vous vous demandez possiblement la différence entre ces fonctions (map et filter) et la compréhension de liste que nous avons vu précédemment. En effet, la compréhension de liste est souvent plus lisible et plus rapide que l'utilisation de ces fonctions, elle est donc à privilégier dans la plupart des cas. Cependant, si une fonction existe déjà ou si vous avez besoin de réutiliser une fonction, les fonctions map et filter peuvent être utiles.