Funkce map pro iteraci objektů v Pythonu
Předpokládejme, že máme funkci square pro
umocnění čísel na druhou. A máme seznam,
na jehož prvky potřebujeme aplikovat
tuto funkci:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
V Pythonu k vyřešení tohoto úkolu lze
použít speciální funkci map.
Přijímá jako parametry funkci a seznam,
na jehož prvky ji potřebujeme aplikovat.
Pojďme použít map k vyřešení
příkladu:
res = map(square, lst)
print(res)
Každý seznam, stejně jako jakýkoli složitý objekt, zabírá v systémové paměti Pythonu mnoho místa. Proto z důvodu úspory prostředků po provedení kódu nebude vrácen nový seznam, ale speciální iterovatelný map-objekt:
<map object at 0x000001F16674BA00>
Pojďme jej projít cyklem:
for el in res:
print(el)
V důsledku se vypíší všechny prvky nového seznamu:
4
9
36
64
225
Pro vytvoření nového seznamu z map-objektu
je potřeba na něj aplikovat funkci list:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
V důsledku se vypíše následující seznam:
[4, 9, 36, 64, 225]
Také při práci s funkcí map lze
v prvním parametru zadat lambda-funkci.
Pojďme přepsat předchozí příklad
pomocí lambda-funkce:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Přepište následující kód pomocí lambda-funkce:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Přepište následující kód pomocí lambda-funkce:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))