繁体   English   中英

Lambda功能无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM