python - 如何将值列表转换为返回这些值的函数列表

标签 python list-comprehension

<分区>

我正在尝试将返回值列表转换为返回这些值的函数列表。

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/

相关文章:

python - Python 中复数除法的停止近似

python - 与 NA 左连接

python - 如何按特定项目切割 list ?

python - 在 python 列表理解过程中调用 print

python - 如何在列表理解中进行中间过程

python - 在 python 中打印出 c 类型的二进制表示

Python/Excel - IOError : [Errno 2] No such file or directory:

haskell - 无法理解列表推导式

python - 我需要以特定方式安排我的列表 - python

list - 初学者对List Comprehension Haskell的疑惑