我正在尝试编写一个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
答案 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
违背了他们的意图。坚持使用该功能。