gpt4 book ai didi

python - 在 Python 中定义一个急切求值的 lambda 列表

转载 作者:行者123 更新时间:2023-11-30 23:11:08 24 4
gpt4 key购买 nike

我想以编程方式创建一个函数列表,每个函数都返回一个具有特定键的字典,并且始终具有相同的值。即:

l1 = [lambda _: {0: 42}, lambda _: {2: 42}, lambda _: {3: 42}]

我正在尝试以编程方式实现相同的结果。为了尝试避免惰性求值的常见问题,我认为我只需要创建一个生成器来动态生成函数:

gen = (lambda _: {f: 42} for f in range(3))

然后使用简单的列表理解来获取列表:

l2 = [f for f in gen]

这还不够。事实上,如果你比较func_clousures彼此都是一样的:

x[0].func_closure == x[1].func_closure == x[2].func_closure  # this is True

获得我想要的结果的最佳方法是什么?

最佳答案

您正在将 f 的最后一个值分配给所有 lambda:

gen = (lambda _,f=f: {f: 42} for f in range(3))

正如 @Jon Clements 善意地指出的那样,该术语是惰性绑定(bind),在 Common_Gotchas_In_Python 中对此进行了描述。

关于python - 在 Python 中定义一个急切求值的 lambda 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30302454/

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