Функцыя map для ітэрацыі аб'ектаў у Python
Няхай у нас ёсць функцыя square для
ўзвядзення лікаў у квадрат. І ёсць спіс,
да элементаў, якога трэба прымяніць
гэтую функцыю:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
У Python каб вырашыць гэтую задачу, можна
выкарыстоўваць спецыяльную функцыю map.
Яна прымае параметрамі функцыю і спіс,
да элементаў якога яе трэба прымяніць.
Давайце скарыстаемся map для вырашэння
прыкладу:
res = map(square, lst)
print(res)
Кожны спіс як і любы складаны аб'ект займае шмат месца ў сістэмнай памяці Python. Таму для эканоміі рэсурсаў пасля выканання коду вернецца не новы спіс, а спецыяльны ітэруемы map-аб'ект:
<map object at 0x000001F16674BA00>
Давайце перабярэм яго цыклу:
for el in res:
print(el)
У выніку вывядуцца ўсе элементы новага спісу:
4
9
36
64
225
Каб стварыць з map-аб'екта новы спіс,
трэба прымяніць да яго функцыю list:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
У выніку выйдзе наступны спіс:
[4, 9, 36, 64, 225]
Таксама пры працы з функцыяй map у
першым параметры можна задаць лямбда-функцыю.
Давайце перапішам папярэдні прыклад з
дапамогай лямбда-функцыі:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Перапішыце наступны код праз лямбда-функцыю:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Перапішыце наступны код праз лямбда-функцыю:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))