Python-在循环内创建lambda

发布于 2021-02-02 23:12:28

我试图在迭代对象列表的循环内创建lambda

lambdas_list = []
for obj in obj_list:
   lambdas_list.append(lambda : obj.some_var)

现在,如果我遍历lambda列表并这样称呼它们:

for f in lambdas_list:
    print f()

我得到相同的价值。这是最后的价值obj在obj_list,因为那是在列表迭代器的块中的最后一个变量。有什么想法可以很好地重写(pythonic)代码以使其正常工作吗?

关注者
0
被浏览
80
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    使用此行:

    lambdas_list.append(lambda obj=obj: obj.some_var)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看