<分区>
我需要在字典中存储函数,每个函数都取决于它的键,比方说,对于键 1
关联的 lambda 函数是 lambda s: s * A[1]
。我尝试使用字典理解,但似乎内联函数以循环的最后一个值定义结束。
d = {k, lambda s: s * A[k] for k in range(n)} # e.g. n = 4
之后创建的所有 lambda 函数都使用 A[3]
声明,而不是 A[0]、A[1]、A[2]
和 A[3]
。这段代码有什么问题?
<分区>
我需要在字典中存储函数,每个函数都取决于它的键,比方说,对于键 1
关联的 lambda 函数是 lambda s: s * A[1]
。我尝试使用字典理解,但似乎内联函数以循环的最后一个值定义结束。
d = {k, lambda s: s * A[k] for k in range(n)} # e.g. n = 4
之后创建的所有 lambda 函数都使用 A[3]
声明,而不是 A[0]、A[1]、A[2]
和 A[3]
。这段代码有什么问题?
最佳答案
修复它的方法是将代码更改为:
d = {k: lambda s, k=k: s * A[k] for k in range(n)}
在没有绑定(bind)的情况下,Python 在调用每个 lambda 时查找“当前”k
,在原始代码中始终为 n-1
。
关于python - 内联函数的字典理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421638/