diciendo
f = lambda x, y : x + y
es casi lo mismo que decir
def f(x, y):
return x + y
en otras palabras lambda
devuelve una función que dados los parámetros a la izquierda del signo :
devolverá el valor de la expresión a la derecha de la misma. sin embargo
Con respecto a una función es bastante limitado, por ejemplo permite sólo una expresión y no se permiten declaraciones. Sin embargo, este no es un problema grave porque en Python puede definir una función completa incluso en el medio de otra función y pasarla en su lugar.
El uso que muestra es bastante malo porque una lambda no tiene sentido ... Python permitiría calcular esa suma directamente en lugar de usar reduce
.
También, dicho sea de paso, para el resultado de ese cálculo hay una solución fácil de forma cerrada que no requiere ninguna iteración ... (sugerencia: la suma de todos los números del 1 al n es n*(n+1)/2
y la suma de todos los múltiplos de 5 desde 5 a n es 5 * (suma de todos los números de 1 a N/5) ... por lo tanto ...)
la solución de forma cerrada es en realidad un poco más complicado que sugirió. Tendría que agregar todos los múltiplos de 3 y todos los múltiplos de 5, y luego restar todos los múltiplos de 15 ya que se agregaron dos veces. –
Sí, esta es exactamente la fórmula, pero no me parece realmente compleja ... – 6502