Python:我可以使用lambda参数n重复lambda操作(n + n)n次吗?

时间:2017-10-31 13:06:25

标签: python lambda

我正在尝试编写高尔夫Python函数,该函数接受参数n并将其与没有pow,*或**的方块对齐。我现在处于这个阶段:

square = lambda n: n+n

我可以使用大约10个以上的字符迭代n + n次吗?

5 个答案:

答案 0 :(得分:2)

你可以使用lambda的递归:

x = lambda y, c:y+y + x(y, c+1) if c< 10 else 0
print(x(10, 0))

输出:

200

答案 1 :(得分:1)

您可以使用递归,条件表达式和默认参数来执行此操作:

square = lambda n, i=0: n + square(n, i + 1) if n > i else 0
square(10)  # 100

我认为这可能仅适用于正数...但可以使用具有一些明智绝对值的负数:

square = lambda n, i=0: abs(n) + square(n, i + 1) if abs(n) > i else 0

答案 2 :(得分:1)

正如@mgilson所说,你可以用递归和lambdas来做到这一点:

square = lambda n, m=0: 0 if n==m else n+square(n,m+1)

重要的是在每一步中随身携带结果

答案 3 :(得分:0)

square = lambda n : sum([n]*n) 编辑:(不使用*或**) square = lambda n : n+sum(range(2,n+n,2))

答案 4 :(得分:0)

你可以试试这个:

sqr = lambda n : sum(n for i in range(n))

<强>输出

>>> sqr(9)
81
>>> sqr(12)
144