Lambda功能无法正常工作

时间:2016-06-21 02:07:54

标签: python lambda

我正在尝试编写一个lambda函数来执行我已经使用while循环实现的相同程序,但我无法弄清楚如何使用lambda函数更正当前程序。在这里,我想将{4}的值减少乘以n。例如,3应该像4*3=12然后12*2=24一样工作,但是如果n=3,则它总是4乘以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

1 个答案:

答案 0 :(得分:4)

~unary bitwise运算符,意为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时,使用Form1.ComboBox1.AutoWordSelect = True违背了他们的意图。坚持使用该功能。