INFO-H-100

TP 15: map, filter, reduce

Presenter Notes

Map

  • map est une fonction qui reçoit comme argument une liste li et une fonction fn, et qui renvoie comme résultat la liste composée des résultats de l'application de la fonction fn sur chaque élément de la liste li.

Plus concrètement :

def my_map(fn, li):
    res = []
    for elem in li:
        res.append(fn(elem))
    return res

Exemple :

>>> map(float, [1, 2, 3])
[1.0, 2.0, 3.0]

Presenter Notes

Filter

  • Filter est une fonction qui reçoit en argument une fonction fn et une liste li, et qui renvoie une liste composée des éléments elem de li pour lesquels fn(e) est vrai.
def my_filter(fn, li):
    res = []
    for elem in li:
        if fn(elem):
            res.append(elem)
    return res

Exemple :

>>> filter(str.isdigit, ["bonjour", "1", "45", "a"])
["1", "45"]

Presenter Notes

Reduce

  • Reduce est une fonction qui reçoit en argument une fonction fn et une liste li, et qui va calculer le résultat de l'appel fn(fn(fn(...fn(fn(li[0], li[1]), li[2])...)))
def my_reduce(fn, li):
    res = li[0]
    for elem in li[1:]:
        res = fn(res, elem)
    return res

Exemple :

>>> def my_add(a, b): return a + b
>>> reduce(my_add, [1, 2, 3])
6

Presenter Notes

Lambda

L'opérateur lambda permet de définir des fonctions à la volée, sans leur donner de nom. Par exemple :

>>> map(lambda x: x+1, [1, 2, 3])
[2, 3, 4]

Les deux codes suivants sont équivalents :

mult = lambda x, y: x * y
def mult(x, y): return x * y

Presenter Notes