La fonction `map`, `filter` et `reduce` sont des fonctions intégrées à Python qui permettent de manipuler des listes (ou autres objets itérables) avec des fonctions. Elles sont particulièrement utiles lorsque vous avez besoin de faire une opération rapide sur une collection d’éléments, sans avoir à écrire une boucle for explicite.
La fonction `map` applique une fonction donnée à chaque élément d’un itérable (comme une liste) et renvoie une liste des résultats.
Voici comment vous pouvez l’utiliser :
```
def square(n):
return n * n
numbers = [1, 2, 3, 4, 5]
squared = map(square, numbers)
La fonction `filter` applique une fonction qui renvoie un booléen (True ou False) à chaque élément d’un itérable. Elle renvoie alors une nouvelle liste contenant seulement les éléments pour lesquels la fonction a renvoyé True.
Voici un exemple d’utilisation :
```
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5]
even_numbers = filter(is_even, numbers)
print(list(even_numbers)) # Affiche : [2, 4]
```
La fonction `reduce` est un peu différente des deux autres. Elle prend une fonction et une liste, et elle applique la fonction de manière cumulative à tous les éléments de la liste, de manière à réduire la liste à une seule sortie.
Voici comment vous pouvez l’utiliser :
```
from functools import reduce
def multiply(x, y): return x * y
numbers = [1, 2, 3, 4, 5]
result = reduce(multiply, numbers)
print(result) # Affiche : 120
```
Dans cet exemple, `reduce` a appliqué la fonction `multiply` à tous les éléments de la liste de manière cumulative, ce qui revient à calculer le produit de tous les éléments de la liste.
Note: La fonction reduce n’est pas une fonction intégrée à Python et doit donc être importée depuis le module `functools`.
Ces trois fonctions sont également compatibles avec les fonctions lambda, ce qui peut rendre votre code encore plus concis. Par exemple, l’exemple `map` ci-dessus pourrait être réécrit comme suit :
```
numbers = [1, 2, 3, 4, 5]
squared = map(lambda n: n * n, numbers)
print(list(squared)) # Affiche : [1, 4, 9, 16, 25]
```