Funktionen map för att iterera över objekt i Python
Antag att vi har en funktion square för
att upphöja tal i kvadrat. Och det finns en lista,
vars element vi behöver applicera
denna funktion på:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
I Python för att lösa denna uppgift kan man
använda en speciell funktion map.
Den tar som parametrar en funktion och en lista,
vars element den ska appliceras på.
Låt oss använda map för att lösa
exemplet:
res = map(square, lst)
print(res)
Varje lista, liksom alla komplexa objekt, tar upp mycket plats i Pythons systemminne. Därför, för att spara resurser, returneras det efter kodkörningen inte en ny lista, utan ett speciellt itererbart map-objekt:
<map object at 0x000001F16674BA00>
Låt oss iterera över det med en loop:
for el in res:
print(el)
Som ett resultat kommer alla element i den nya listan att skrivas ut:
4
9
36
64
225
För att skapa en ny lista från map-objektet
behöver man applicera funktionen list på det:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
Som ett resultat kommer följande lista att skrivas ut:
[4, 9, 36, 64, 225]
Även när man arbetar med funktionen map kan man
i den första parametern ange en lambda-funktion.
Låt oss skriva om föregående exempel med
hjälp av en lambda-funktion:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Skriv om följande kod med en lambda-funktion:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Skriv om följande kod med en lambda-funktion:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))