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ļ:

pythondef 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ā:

pythondef square(num):
  return num ** 2

Padodam parametros func skaitlisko sarakstu un funkciju square kā izsaukumu atpakaļ:

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

Konsole tiks izvadīts jauns saraksts, kas sastāv no skaitļu kvadrātiem:

python[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:

pythonlambda funkcijas parametrs: darbība ar funkcijas parametru

Pārrakstīsim funkciju square ar lambda funkcijas palīdzību un padodam to parametrā func:

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

Lambda funkciju var ierakstīt mainīgajā:

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

Pārrakstiet šo kodu, izmantojot lambda funkciju:

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

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

Pārrakstiet šo kodu, izmantojot lambda funkciju:

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

Pārrakstiet šo kodu, izmantojot lambda funkciju:

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