Fonction map pour itérer les objets en Python
Supposons que nous ayons une fonction square pour
élever les nombres au carré. Et il y a une liste
dont les éléments doivent recevoir l'application de
cette fonction :
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
En Python, pour résoudre cette tâche, on peut
utiliser une fonction spéciale map.
Elle prend comme paramètres une fonction et une liste,
aux éléments de laquelle elle doit être appliquée.
Utilisons map pour résoudre
l'exemple :
res = map(square, lst)
print(res)
Chaque liste, comme tout objet complexe, occupe beaucoup de place dans la mémoire système de Python. Donc, pour économiser les ressources, après l'exécution du code, ce n'est pas une nouvelle liste qui sera renvoyée, mais un objet map itérable spécial :
<map object at 0x000001F16674BA00>
Parcourons-le avec une boucle :
for el in res:
print(el)
En conséquence, tous les éléments de la nouvelle liste s'afficheront :
4
9
36
64
225
Pour créer une nouvelle liste à partir de l'objet map,
il faut lui appliquer la fonction list :
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
En conséquence, la liste suivante s'affichera :
[4, 9, 36, 64, 225]
Aussi, lors du travail avec la fonction map,
on peut spécifier une fonction lambda dans le premier paramètre.
Réécrivons l'exemple précédent avec
l'aide d'une fonction lambda :
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Réécrivez le code suivant en utilisant une fonction lambda :
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Réécrivez le code suivant en utilisant une fonction lambda :
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))