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:

pythondef 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:

pythondef square(num):
  return num ** 2

Posredujmo v parametre func številski seznam in funkcijo square kot povratni klic:

pythonprint( func([1, 2, 3], square) )

V konzolo se bo izpisal nov seznam, sestavljen iz kvadratov števil:

python[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:

pythonlambda parameter funkcije: operacija s parametrom funkcije

Prepišimo funkcijo square z uporabo lambda funkcije in jo posredujmo v parameter func:

pythonprint( func([1, 2, 3], lambda num: num ** 2) )

Lambda funkcijo lahko zapišemo v spremenljivko:

pythonsquare = lambda num: num ** 2
print( func([1, 2, 3], square) )
Задание 1

Prepišite naslednjo kodo z lambda funkcijo:

pythondef func(num, clb):
  return clb(num)

def clb(num):
  return num + 1
  
print( func(2, clb) )
Задание 2

Prepišite naslednjo kodo z lambda funkcijo:

pythondef 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) )
Задание 3

Prepišite naslednjo kodo z lambda funkcijo:

pythondef func(num1, num2, clb):
  res = clb(num1) + num2
  return res
  
def clb(num):
  return num ** 3
  
print(func(2, 6, clb))