【问题标题】:Lambda invalid syntaxLambda 无效语法
【发布时间】:2019-03-19 11:22:21
【问题描述】:

这个:

add = lambda x, y: x += y

给予:

SyntaxError: 无效语法

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

【问题讨论】:

标签: python python-3.x lambda


【解决方案1】:

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

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)

【讨论】:

    【解决方案2】:

    对于继续乘法,这是有效的:

    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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 2013-06-17
      相关资源
      最近更新 更多