Lambda funkcija Python'e

Tarkime, kad turime funkciją func, kuri parametrais priima sąrašą ir atgalinio ryšio funkciją (callback). Funkcija sukurs naują sąrašą iš pradinio sąrašo elementų. Be to, kiekvienam elementui bus pritaikyta atgalinio ryšio funkcija:

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

Dabar sukurkime funkciją square, kuri paduos jai perduotą skaičių kvadratu:

pythondef square(num):
  return num ** 2

Perduokime į func parametrus skaičių sąrašą ir funkciją square kaip atgalinio ryšio funkciją:

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

Į konsolę bus išvestas naujas sąrašas, sudarytas iš skaičių kvadratų:

python[1, 4, 9]

Tačiau šį kodą galima žymiai sutrumpinti, naudojant lambda funkciją - anoniminę funkciją, kuri iškviečiama su raktažodžio lambda pagalba ir užrašoma vienoje eilutėje. Todėl į lambda funkciją galima perrašyti tik tas funkcijas, kurių kodas užima vieną eilutę.

Lambda funkcijos sintaksė atrodo taip:

pythonlambda funkcijos parametras: operacija su parametru

Perrašykime funkciją square lambda funkcijos pagalba ir perduokime ją į func parametrą:

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

Lambda funkciją galima įrašyti į kintamąjį:

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

Perrašykite šį kodą naudodami lambda funkciją:

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

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

Perrašykite šį kodą naudodami lambda funkciją:

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

Perrašykite šį kodą naudodami lambda funkciją:

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