Lambda-functie in Python

Stel we hebben een functie func, die als parameters een lijst en een callback accepteert. De functie zal een nieuwe lijst maken van de elementen van de oorspronkelijke lijst. Hierbij wordt de callback toegepast op elk van de elementen:

pythondef func(lst, callback):
  res = []
  
  for el in lst:
    res.append(callback(el))
    
  return res

Laten we nu een functie square maken, die het doorgegeven getal zal kwadrateren:

pythondef square(num):
  return num ** 2

Laten we aan de parameters van func een numerieke lijst en de functie square doorgeven als callback:

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

Er wordt een nieuwe lijst naar de console uitgevoerd, bestaande uit de kwadraten van de getallen:

python[1, 4, 9]

Deze code kan echter aanzienlijk worden ingekort door gebruik te maken van een lambda-functie - een anonieme functie, die wordt aangeroepen met behulp van het sleutelwoord lambda en in één regel wordt geschreven. Daarom kunnen in een lambda-functie alleen functies worden herschreven waarvan de code één regel beslaat.

De syntaxis van een lambda-functie ziet er als volgt uit:

pythonlambda parameter van de functie: bewerking met parameter van de functie

Laten we de functie square herschrijven met behulp van een lambda-functie en deze doorgeven aan de parameter func:

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

Een lambda-functie kan in een variabele worden geschreven:

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

Herschrijf de volgende code met een lambda-functie:

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

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

Herschrijf de volgende code met een lambda-functie:

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

Herschrijf de volgende code met een lambda-functie:

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