Lambda-funktion i Python
Lad os sige, at vi har en funktion func,
som som parametre tager en liste og en
callback. Funktionen vil oprette en ny
liste fra elementerne i den oprindelige liste. Mens
callback vil blive anvendt på hvert af elementerne:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Lad os nu oprette en funktion square,
som vil kvadrere det tal, der sendes til den:
def square(num):
return num ** 2
Lad os sende en numerisk liste og funktionen square som
callback til parametrene for func:
print( func([1, 2, 3], square) )
En ny liste bestående af kvadrater på tallene vil blive vist i konsollen:
[1, 4, 9]
Denne kode kan dog betydeligt forkortes
ved at bruge en lambda-funktion
- en anonym funktion, der kaldes med
nøgleordet lambda og
skrives på en enkelt linje. Derfor kan kun
funktioner, hvis kode fylder én linje, omskrives til
en lambda-funktion.
Syntaksen for en lambda-funktion ser sådan ud:
lambda funktionsparameter: operation med funktionsparameter
Lad os omskrive funktionen square med
en lambda-funktion og sende den til
parameteren func:
print( func([1, 2, 3], lambda num: num ** 2) )
Lambda-funktionen kan skrives i en variabel:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Omskriv følgende kode med en lambda-funktion:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Omskriv følgende kode med en lambda-funktion:
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-funktion:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))