Ламбда функция в Python
Нека имаме функция func,
която приема като параметри списък и
обратна функция (callback). Функцията ще създаде нов
списък от елементите на оригиналния списък. При
това към всеки от елементите ще се приложи
обратната функция:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Сега нека създадем функция square,
която ще повдига подаденото й число
на квадрат:
def square(num):
return num ** 2
Нека подадем като параметри на func
числов списък и функцията square като
обратна функция:
print( func([1, 2, 3], square) )
В конзолата ще се изведе нов списък, състоящ се от квадратите на числата:
[1, 4, 9]
Обаче този код може значително да се
съкрати, като се използва ламбда функция
- анонимна функция, която се извиква с
помощта на ключовата дума lambda и
се записва на един ред. Затова в
ламбда функция може да се пренапише само
функции, чийто код заема един ред.
Синтаксисът на ламбда функцията изглежда така:
lambda параметър на функцията: операция с параметъра на функцията
Нека пренапишем функцията square с
помощта на ламбда функция и я подадем като
параметър на func:
print( func([1, 2, 3], lambda num: num ** 2) )
Ламбда функцията може да се запише в променлива:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Пренапишете следния код с ламбда функция:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Пренапишете следния код с ламбда функция:
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) )
Пренапишете следния код с ламбда функция:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))