Lambda funkcija Python
Pieņemsim, ka mums ir funkcija func,
kura parametros pieņem sarakstu un
izsaukumu atpakaļ. Funkcija izveidos jaunu
sarakstu no sākotnējā saraksta elementiem. Tajā pašā laikā
katram elementam tiks piemērots
izsaukums atpakaļ:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Tagad izveidosim funkciju square,
kura kāpinās tai nodoto skaitli
kvadrātā:
def square(num):
return num ** 2
Padodam parametros func
skaitlisko sarakstu un funkciju square kā
izsaukumu atpakaļ:
print( func([1, 2, 3], square) )
Konsole tiks izvadīts jauns saraksts, kas sastāv no skaitļu kvadrātiem:
[1, 4, 9]
Tomēr šo kodu var ievērojami
saīsināt, izmantojot lambda funkciju
- anonīmu funkciju, kuru izsauc ar
atslēgvārda lambda palīdzību un
tiek ierakstīta vienā rindā. Tāpēc
lambda funkcijā var pārrakstīt tikai
funkcijas, kuru kods aizņem vienu rindu.
Lambda funkcijas sintakse izskatās šādi:
lambda funkcijas parametrs: darbība ar funkcijas parametru
Pārrakstīsim funkciju square ar
lambda funkcijas palīdzību un padodam to
parametrā func:
print( func([1, 2, 3], lambda num: num ** 2) )
Lambda funkciju var ierakstīt mainīgajā:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Pārrakstiet šo kodu, izmantojot lambda funkciju:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Pārrakstiet šo kodu, izmantojot lambda funkciju:
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) )
Pārrakstiet šo kodu, izmantojot lambda funkciju:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))