Ламбда функция в Python

Нека имаме функция func, която приема като параметри списък и обратна функция (callback). Функцията ще създаде нов списък от елементите на оригиналния списък. При това към всеки от елементите ще се приложи обратната функция:

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

Сега нека създадем функция square, която ще повдига подаденото й число на квадрат:

pythondef square(num):
  return num ** 2

Нека подадем като параметри на func числов списък и функцията square като обратна функция:

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

В конзолата ще се изведе нов списък, състоящ се от квадратите на числата:

python[1, 4, 9]

Обаче този код може значително да се съкрати, като се използва ламбда функция - анонимна функция, която се извиква с помощта на ключовата дума lambda и се записва на един ред. Затова в ламбда функция може да се пренапише само функции, чийто код заема един ред.

Синтаксисът на ламбда функцията изглежда така:

pythonlambda параметър на функцията: операция с параметъра на функцията

Нека пренапишем функцията square с помощта на ламбда функция и я подадем като параметър на func:

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

Ламбда функцията може да се запише в променлива:

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

Пренапишете следния код с ламбда функция:

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

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

Пренапишете следния код с ламбда функция:

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

Пренапишете следния код с ламбда функция:

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