Exercice 23 / 100

Map et filter

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

📖 Cours

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 est appliquée à chaque élément, et filter garde ceux pour lesquels elle renvoie une valeur que Python juge vraie. On écrit le plus souvent un test qui renvoie True ou False, mais tout ce qui compte pour vrai fait l'affaire : un nombre différent de 0, un texte non vide, une liste non vide. Comptent pour faux : False, 0, le texte vide, la liste vide et None.

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
map transforme chaque élément et en rend autant, filter les teste et ne garde que ceux qui passent

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.

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