gpt4 book ai didi

python - 在python中使用lambda表达式在循环内生成函数

转载 作者:IT老高 更新时间:2023-10-28 22:11:23 28 4
gpt4 key购买 nike

如果我列出两个函数列表:

def makeFun(i):
return lambda: i

a = [makeFun(i) for i in range(10)]
b = [lambda: i for i in range(10)]

为什么列表 ab 不以保存方式运行?

例如:

>>> a[2]()
2
>>> b[2]()
9

最佳答案

正如其他人所说,范围界定是问题所在。请注意,您可以通过向 lambda 表达式添加额外参数并为其分配默认值来解决此问题:

>> def makeFun(i): return lambda: i
...
>>> a = [makeFun(i) for i in range(10)]
>>> b = [lambda: i for i in range(10)]
>>> c = [lambda i=i: i for i in range(10)] # <-- Observe the use of i=i
>>> a[2](), b[2](), c[2]()
(2, 9, 2)

结果是 i 现在被显式放置在限制为 lambda 表达式的范围内。

关于python - 在python中使用lambda表达式在循环内生成函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1841268/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com