Lambda-Funktion in Python

Angenommen, wir haben eine Funktion func, die als Parameter eine Liste und einen Callback entgegennimmt. Die Funktion wird eine neue Liste aus den Elementen der ursprünglichen Liste erstellen. Dabei wird auf jedes Element der Callback angewendet:

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

Erstellen wir nun eine Funktion square, die die ihr übergebene Zahl quadriert:

pythondef square(num):
  return num ** 2

Lassen Sie uns func eine Zahlenliste und die Funktion square als Callback übergeben:

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

In der Konsole wird eine neue Liste ausgegeben, die aus den Quadraten der Zahlen besteht:

python[1, 4, 9]

Dieser Code kann jedoch erheblich verkürzt werden, indem man eine Lambda-Funktion verwendet - eine anonyme Funktion, die mit dem Schlüsselwort lambda aufgerufen wird und in einer Zeile geschrieben wird. Daher können in Lambda-Funktionen nur Funktionen umgeschrieben werden, deren Code eine Zeile umfasst.

Die Syntax der Lambda-Funktion sieht so aus:

pythonlambda Funktionsparameter: Operation mit dem Funktionsparameter

Lassen Sie uns die Funktion square mit einer Lambda-Funktion umschreiben und sie an den Parameter func übergeben:

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

Die Lambda-Funktion kann in eine Variable geschrieben werden:

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

Schreiben Sie den folgenden Code mit einer Lambda-Funktion um:

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

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

Schreiben Sie den folgenden Code mit einer Lambda-Funktion um:

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

Schreiben Sie den folgenden Code mit einer Lambda-Funktion um:

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