Lambda-funksjon i Python
La oss si at vi har en funksjon func,
som som parametere tar imot en liste og en
callback. Funksjonen vil opprette en ny
liste fra elementene i den opprinnelige listen. For
hvert av elementene vil
callbacken bli brukt:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
La oss nå opprette en funksjon square,
som vil kvadrere tallet som blir sendt til den:
def square(num):
return num ** 2
La oss sende inn en tall-liste og funksjonen square som
callback i parameterne til func:
print( func([1, 2, 3], square) )
En ny liste, bestående av kvadratene av tallene, vil bli skrevet ut i konsollen:
[1, 4, 9]
Imidlertid kan denne koden betydelig
forkortes ved å bruke en lambda-funksjon
- en anonym funksjon, som kalles med
nøkkelordet lambda og
skrives på én linje. Derfor kan bare
funksjoner hvis kode tar én linje omskrives til
en lambda-funksjon.
Syntaksen for en lambda-funksjon ser slik ut:
lambda funksjonsparameter: operasjon med funksjonsparameter
La oss omskrive funksjonen square med
en lambda-funksjon og sende den inn i
parameteren func:
print( func([1, 2, 3], lambda num: num ** 2) )
Lambda-funksjonen kan skrives til en variabel:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Omskriv følgende kode med en lambda-funksjon:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Omskriv følgende kode med en lambda-funksjon:
def func(num, clb1, clb2):
return (clb1(num), clb2(num))
def clb1(num):
return num + 1
def clb2(num):
return num - 1
print( func(2, clb1, clb2) )
Omskriv følgende kode med en lambda-funksjon:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))