Exercice 23 / 100

Map et filter

Appliquer triple à [1,2,3,4,5], puis garder seulement > 10

map() et filter() permettent d'appliquer une fonction à tous les éléments d'une séquence — sans écrire de boucle for.

map : TRANSFORMER chaque élément

Syntaxe

map(fonction, sequence)

Applique la fonction à chaque élément, renvoie un map object qu'on convertit en liste avec list().

nombres = [1, 2, 3, 4, 5] triple = lambda x: x * 3
list(map(triple, nombres)) # → [3, 6, 9, 12, 15]

Équivalent en list comprehension :

[triple(x) for x in nombres]

filter : GARDER les éléments qui passent un test

Syntaxe

filter(fonction, sequence)

La fonction doit renvoyer True ou False. Seuls les éléments pour lesquels elle renvoie True sont gardés.

nombres = [3, 6, 9, 12, 15] list(filter(lambda x: x > 10, nombres)) # → [12, 15]

Équivalent en list comprehension :

[x for x in nombres if x > 10]

Chaîner map et filter

nombres = [1, 2, 3, 4, 5] triple = lambda x: x * 3
tripled = list(map(triple, nombres)) # [3, 6, 9, 12, 15] grands = list(filter(lambda x: x > 10, tripled)) # [12, 15]

map() et filter() renvoient un itérateur, pas une liste. Tu dois appeler list() (ou les utiliser dans un for) pour voir le résultat.

map transforme chaque élément et en rend autant, filter les teste et ne garde que ceux qui passent : dans les deux cas il faut appeler list pour voir le résultat

En Python moderne, on préfère souvent les list comprehensions à map/filter : c'est plus lisible. Mais connaître map/filter reste utile, ils sont très courants en programmation fonctionnelle et dans pandas.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →