[英]Lambda function not working properly
我正在尝试编写一个lambda函数来执行我已经使用while
循环实现的相同程序,但我无法弄清楚如何使用lambda函数更正当前程序。 在这里,我希望乘以n
减少n
值。 例如,3应该像4*3=12
然后12*2=24
,但是如果n=3
,它在4乘以n=3
。 使用while
循环,我在foo
函数中给出了如下所示的程序。 这不是因子; 基本上,我想打印这个系列为不同的n值,如:
n=1 ans=4,
n=2 ans=8,
n=3 ans=24,
n=4 ans=96,
n=5 ans= 480.
foo
函数中的逻辑正在生成此输出。
foo= lambda n: 4*n**~-n
def foo(n):
a=4
i=1
while i<=n:
a*=i
i+=1
return a
print(foo(7)) #20160
~
是一元的 按位运算符的意思NOT
。 ~x
相当于-x - 1
。 让我们打破这个:
4 * n **〜-n == 4 * 3 **〜-3 == 4 * 3 **(〜-3)== 4 * 3 ** 2 == 4 *(3 ** 2)== 4 * 9 == 36
你想要的是找到4 * factorial(n)
。 您可以导入math
模块来执行此操作:
from math import factorial
def foo(n):
return 4 * factorial(n)
这将解释为:
from math import factorial
foo = lambda n: 4*factorial(n)
上述方法的问题在于lambda
被创建为无名 。 当你想多次使用lambda
时使用lambda
是违背他们的意图的。 坚持使用该功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.