<分区>
我正在尝试将返回值列表转换为返回这些值的函数列表。
lst = [1, 2]
funcs = [lambda: x for x in lst]
这相当于:
x = 2
funcs = [lambda: x, lambda: x]
但我想得到:
funcs = [lambda: 1, lambda 2]
这question解释了为什么会发生这种情况,但没有提供实现方法。
有什么办法可以实现吗?
<分区>
我正在尝试将返回值列表转换为返回这些值的函数列表。
lst = [1, 2]
funcs = [lambda: x for x in lst]
这相当于:
x = 2
funcs = [lambda: x, lambda: x]
但我想得到:
funcs = [lambda: 1, lambda 2]
这question解释了为什么会发生这种情况,但没有提供实现方法。
有什么办法可以实现吗?
最佳答案
这会起作用:
[lambda x=x: x for x in lst]
说明:这将创建一个新的函数参数 x
,它使用当前设置为循环参数 x
的默认值进行初始化。当您调用不带参数的方法时,将返回默认值。
我建议使用不同的名称以减少混淆:
[lambda result=i: result for i in lst]
另一种方法是编写您自己的类似 lambda
的函数,该函数定义它返回的嵌套函数。
关于python - 如何将值列表转换为返回这些值的函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47533351/