filter
, map
, reduce
Bien que ces fonctions soient définies en Python, nous allons les implémenter avec les noms suivants:
a) 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,
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]
b) 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,
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]
c) 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:
# addition des éléments
assert réduit(lambda x, y: x + y, [0, 1, 2, 3, 4]) == 10
# soustraction des éléments
assert réduit(lambda x, y: x - y, [0, 1, 2, 3, 4]) == -10
# concaténation des éléments
assert réduit(lambda x, y: str(x) + str(y), [0, 1, 2, 3, 4]) == "01234"
En utilisant la fonction applique
, créer en une ligne une fonction
négatif
qui permet de passer ce test:
assert négatif([0, 1, 2, 3, 4]) == [0, -1, -2, -3, -4]
En utilisant la fonction réduit
, créer en une ligne une fonction
longueur
qui permet de passer ces tests:
assert longueur([]) == 0
assert longueur([0, 1, 2]) == 3
assert longueur([0, 1, 2, 3, 4]) == 5