当前位置: 首页 > 面试题库 >

Python-在循环内创建lambda

徐文斌
2023-03-14
问题内容

我试图在迭代对象列表的循环内创建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)代码以使其正常工作吗?


问题答案:

使用此行:

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


 类似资料:
  • 问题内容: 我写了这段代码,将图像加载到ImageView小部件中: 现在,我要加载多个图像。为此,我需要动态创建图像视图,但是我不知道如何… 我想在for循环中运行我的代码: 我的主要问题是在循环内动态创建多个ImageView 问题答案: 您可以根据需要修改布局,图像资源和任何图像(也可以是动态的)…

  • 问题内容: 我正在尝试在循环内创建函数: 问题在于所有功能最终都相同。这三个函数都没有返回0、1和2,而是返回2: 为什么会发生这种情况,我应该怎么做才能获得分别输出0、1和2的3个不同函数? 问题答案: 你在后期绑定方面遇到了问题-每个函数都i尽可能晚地查找(因此,在循环结束后调用时,i将设置为2)。 可以通过强制早期绑定轻松修复:更改为以下形式: 缺省值(右手i输入i=i是参数名的默认值,i左

  • 问题内容: java中是否允许这样做: 我的问题的关键词是。是否可以允许最终变量随循环的每次运行而变化?我想知道这是因为final说您不能更改变量的值(仅调用),但是我正在使用重新定义整个变量。 它们是两个完全不同的变量,只是具有相同的名称-循环的前一次运行中的变量已经朝着垃圾收集器的方向前进了吗? 问题答案: 是的,允许。该关键字意味着你不能改变的变量的值 的范围之内 。对于循环示例,您可以认为

  • 我试图研究我的数据中有零值的概率,我开发了一个代码,当一列数据为零时输出另一列数据的值,这正是我所需要的。但是,对于577BY29数据流中的每一列和其他28列都要这样做是很困难的,所以我决定创建一个for循环,在我有以下内容的地方为我这样做: 您可以看到,当输出数据帧有n=29列时,代码循环正确,但对于上面指定的条件,代码循环不正确。 请帮忙,谢谢!

  • 问题内容: 我正在使用ajax google maps脚本,需要在for循环中创建动态变量名称。 我想的是:,,等。我想这有什么问题 Firebug给了我这个: 问题答案: 为此使用数组。

  • 本文向大家介绍如何在JavaScript循环内创建动态变量名?,包括了如何在JavaScript循环内创建动态变量名?的使用技巧和注意事项,需要的朋友参考一下 为此,您需要向当前范围添加属性。使用它来实现此目的,这适用于程序中的当前作用域- 上面将获得您想要的内容,并像下面这样检索它- 如上所示,它将为您提供文本“在此处添加”。