Ale*_*azo 10 python lambda dictionary
我需要将函数存储在字典中,每个函数都取决于它的键,比方说,关键字1
是关联的lambda函数lambda s: s * A[1]
.我尝试使用dict理解,但似乎内联函数结束时定义了循环的最后一个值.
d = {k, lambda s: s * A[k] for k in range(n)} # e.g. n = 4
Run Code Online (Sandbox Code Playgroud)
之后,所有创建的lambda函数都用A[3]
而不是A[0], A[1], A[2]
和声明A[3]
.这段代码出了什么问题?
YS-*_*S-L 12
修复它的方法是将代码更改为:
d = {k: lambda s, k=k: s * A[k] for k in range(n)}
Run Code Online (Sandbox Code Playgroud)
如果没有绑定,Python会k
在调用每个lambda时查找"当前" ,它始终n-1
位于原始代码中.