Lambda语法无效。

4
这是:
add = lambda x, y: x += y

给出:

SyntaxError: 语法错误

我的任务是使用1个函数和2个lambda函数来将1-513之间的每个数相乘或相加。所以如果您有任何建议,将会很有帮助。

10
x += y 是一个语句,不是表达式。 lambda 函数只能包含表达式。请尝试使用 lambda x, y: x+y 代替。 - Adam Smith
可能是为什么lambda中的print不起作用?的重复问题。 - tripleee
2个回答

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
对于连续乘法,这样做:
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)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接