Lambda funkcija v Pythonu
Recimo, da imamo funkcijo func,
ki kot parametre sprejme seznam in
povratni klic. Funkcija bo ustvarila nov
seznam iz elementov izvirnega seznama. Pri
tem bo na vsakega od elementov uporabljen
povratni klic:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Zdaj ustvarimo funkcijo square,
ki bo število, ki ji je posredovano,
dvignila na kvadrat:
def square(num):
return num ** 2
Posredujmo v parametre func
številski seznam in funkcijo square kot
povratni klic:
print( func([1, 2, 3], square) )
V konzolo se bo izpisal nov seznam, sestavljen iz kvadratov števil:
[1, 4, 9]
Vendar pa lahko to kodo precej
skrajšamo z uporabo lambda funkcije
- anonimne funkcije, ki se kliče z
uporabo ključne besede lambda in
je zapisana v eni vrstici. Zato v
lambda funkcijo lahko prepišemo le
funkcije, katerih koda zaseda eno vrstico.
Sintaksa lambda funkcije izgleda takole:
lambda parameter funkcije: operacija s parametrom funkcije
Prepišimo funkcijo square z
uporabo lambda funkcije in jo posredujmo v
parameter func:
print( func([1, 2, 3], lambda num: num ** 2) )
Lambda funkcijo lahko zapišemo v spremenljivko:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Prepišite naslednjo kodo z lambda funkcijo:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Prepišite naslednjo kodo z lambda funkcijo:
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) )
Prepišite naslednjo kodo z lambda funkcijo:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))