Funkcija map objektų iteracijai Python kalboje
Tarkime, kad turime funkciją square
skaičiams pakelti kvadratu. Ir yra sąrašas,
kurių elementams reikia pritaikyti
šią funkciją:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
Python kalboje šiai problemai išspręsti galima
naudoti specialią funkciją map.
Ji priima parametrais funkciją ir sąrašą,
kurių elementams ją reikia pritaikyti.
Panaudokime map pavyzdžiui išspręsti:
res = map(square, lst)
print(res)
Kiekvienas sąrašas, kaip ir bet kuris sudėtingas objektas, užima daug vietos sistemos atmintyje Python. Todėl, siekiant sutaupyti išteklius, po kodo vykdymo grąžinamas ne naujas sąrašas, o specialus iteruojamas map-objektas:
<map object at 0x000001F16674BA00>
Peržiūrėkime jį ciklu:
for el in res:
print(el)
Rezultate bus išvesti visi naujo sąrašo elementai:
4
9
36
64
225
Norint sukurti naują sąrašą iš map-objekto,
reikia jam pritaikyti funkciją list:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
Rezultate bus išvestas toks sąrašas:
[4, 9, 36, 64, 225]
Taip pat, dirbant su funkcija map,
pirmame parametre galima nurodyti lambda-funkciją.
Perrašykime ankstesnį pavyzdį
naudodami lambda-funkciją:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Perrašykite šį kodą naudodami lambda-funkciją:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Perrašykite šį kodą naudodami lambda-funkciją:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))