所以我真的不知道如何解释这个问题。
在for循环中我有一个lambda表达式,但我不明白为什么你需要i=i
部分。
def makeActions():
acts = []
for i in range(5):
acts.append(lambda x, i=i: x**i)
return acts
答案 0 :(得分:2)
让我们分解你的lambda函数。它是一个接受两个参数(x,i)并以i的力量执行x的函数。
for循环每次迭代都会创建新的lambda函数。如果您删除i=i
,则所有功能都相同:lambda x, i: x**i
所以for循环没有意义。它们都是相同的功能。
现在,部分i=i
意味着从for循环中分配i
的值作为函数的默认参数。行为列表将具有
[lambda x, i=1: x**i, lambda x, i=2: x**o, lambda ..]
然后每次迭代都会创建一个新的lambda函数,i
的值不同。
我认为你感到困惑的部分是你的for循环,lambda使用变量名i
。但是,lambda定义了一个参数(名为i
),for循环使用具有相同名称的不同变量。正如@Arndt在评论中所说,你可以将lambda定义更改为lambda x, y=i: x**y
,这样就更清楚了。