De map-functie voor het itereren van objecten in Python
Stel we hebben een functie square voor
het kwadrateren van getallen. En er is een lijst
waarop we deze functie moeten toepassen:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
In Python kunnen we voor deze taak
gebruikmaken van de speciale functie map.
Ze neemt als parameters een functie en een lijst,
waarop ze moet worden toegepast.
Laten we map gebruiken om het
voorbeeld op te lossen:
res = map(square, lst)
print(res)
Elke lijst, net als elk complex object, neemt veel ruimte in beslag in het systeemgeheugen van Python. Daarom wordt er, om bronnen te besparen, niet een nieuwe lijst geretourneerd, maar een speciaal itereerbaar map-object:
<map object at 0x000001F16674BA00>
Laten we het doorlopen met een lus:
for el in res:
print(el)
Als resultaat worden alle elementen van de nieuwe lijst weergegeven:
4
9
36
64
225
Om van een map-object een nieuwe lijst te maken,
moet je de functie list erop toepassen:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
Als resultaat wordt de volgende lijst weergegeven:
[4, 9, 36, 64, 225]
Ook kun je bij het werken met de functie map
in de eerste parameter een lambda-functie opgeven.
Laten we het vorige voorbeeld herschrijven met
behulp van een lambda-functie:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Herschrijf de volgende code met een lambda-functie:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Herschrijf de volgende code met een lambda-functie:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))