Función Lambda en Python

Supongamos que tenemos una función func, que toma como parámetros una lista y un callback. La función creará una nueva lista a partir de los elementos de la lista original. Al mismo tiempo, se aplicará el callback a cada uno de los elementos:

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

Ahora creemos una función square, que elevará al cuadrado el número que se le pase:

pythondef square(num):
  return num ** 2

Pasemos a los parámetros de func una lista numérica y la función square como callback:

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

En la consola se mostrará una nueva lista, que consiste en los cuadrados de los números:

python[1, 4, 9]

Sin embargo, este código se puede acortar significativamente usando la función lambda - una función anónima, que se llama con la palabra clave lambda y se escribe en una sola línea. Por lo tanto, en la función lambda solo se pueden reescribir funciones cuyo código ocupa una línea.

La sintaxis de la función lambda se ve así:

pythonlambda parámetro de la función: operación con el parámetro de la función

Reescribamos la función square usando una función lambda y pasémosla al parámetro func:

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

La función lambda se puede asignar a una variable:

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

Reescriba el siguiente código usando una función lambda:

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

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

Reescriba el siguiente código usando una función lambda:

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

Reescriba el siguiente código usando una función lambda:

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