Lambda无效语法

时间:2018-10-15 04:36:33

标签: python python-3.x lambda

此:

add = lambda x, y: x += y

礼物:

  

SyntaxError:语法无效

我的任务是能够使用1个函数和2个lambda函数对1-513之间的每个数字进行加法运算或相加。因此,如果您有任何建议会有所帮助。

2 个答案:

答案 0 :(得分:3)

正如大家所说,您应该在lambda正文中放置一个表达式而不是一个语句,也许这会帮助您:

from functools import reduce

add = lambda x,y: reduce(lambda i,j:i+j, range(x,y))

mul

mult = lambda x,y: reduce(lambda i,j:i*j, range(x,y))

或者您可以不用reduce来获得add

add = lambda x,y: sum(range(x,y))

此外,您可以像这样使用operator

from operator import mul
from functools import reduce
mult = lambda x,y: reduce(mul, range(x,y), 1)

答案 1 :(得分:1)

对于连续乘法,这有效:

f = lambda n1, n2: n2 * (f(n1, n2-1) if n2 > 1 else 1)
print('f(1, 5) =', f(1, 5))

此输出:

f(1, 5) = 120

(1 * 2 * 3 * 4 * 5 = 120)