Exercices
Chapitre 4: Paradigmes de programmation*
1 Programmation fonctionnelle avec filter
,
map
, reduce
-
Bien que ces fonctions soient définies en Python, nous allons les implémenter avec les noms suivants:
filtre(fonction, liste)
(filter): fonction qui prend deux paramètres en entrée:- un fonction de décision à 1 paramètre de type simple(
int pour simplifier
). - et une liste,
- un fonction de décision à 1 paramètre de type simple(
Cette fonction renvoie une nouvelle liste avec seulement les éléments ayant satisfait la fonction de décision.
Voici quelques tests à effectuer pour vérifier son fonctionnement:
# nb impairs assert filtre(lambda x: x % 2 == 1, [0, 1, 2, 3, 4]) == [1, 3] # nb pairs assert filtre(lambda x: x % 2 == 0, [0, 1, 2, 3, 4]) == [0, 2, 4]
applique(fonction, liste)
(map): fonction qui prend deux paramètres en entrée:- un fonction à 1 paramètre de type simple(
int pour simplifier
) qui renvoie une valeur. - et une liste,
- un fonction à 1 paramètre de type simple(
Cette fonction renvoie une nouvelle liste pour laquelle a été appliqué la fonction donnée en argument à chacun des éléments de la liste d’entrée.
Voici quelques tests à effectuer pour vérifier son fonctionnement:
# doubles assert applique(lambda x: x ** 2, [0, 1, 2, 3, 4]) == [0, 1, 4, 9, 16] # puissances de 2 assert applique(lambda n: 2**n, [0, 1, 2, 3, 4]) == [1, 2, 4, 8, 16]
réduit
(reduce): fonction qui prend deux paramètres en entrée:- un fonction à 2 paramètres de type simple qui renvoie une valeur.
- une liste.
Cette fonction renvoie une valeur par l’accumulation des valeurs de la liste par la fonction d’accumulation donnée en argument.
Voici quelques tests à effectuer pour vérifier son fonctionnement:
-
En utilisant la fonction
applique
, créer en une ligne une fonctionnégatif
qui permet de passer ce test: -
En utilisant la fonction
réduit
, créer en une ligne une fonctionlongueur
qui permet de passer ces tests: