需要解释的lambda表达式的一部分

时间:2018-03-27 06:37:12

标签: python function lambda

所以我真的不知道如何解释这个问题。

在for循环中我有一个lambda表达式,但我不明白为什么你需要i=i部分。

def makeActions():
    acts = []
    for i in range(5):
        acts.append(lambda x, i=i: x**i)
    return acts

1 个答案:

答案 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,这样就更清楚了。