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

如何在列表理解中设置局部变量?

杜嘉慕
2023-03-14
问题内容

我有一个方法,它接受一个列表并返回一个对象:

# input a list, returns an object
def map_to_obj(lst):
    a_list = f(lst)
    return a_list[0] if a_list else None

我想获取一个包含所有not的映射元素的列表None

像这样:

v_list = [v1, v2, v3, v4]

[map_to_obj(v) for v in v_list if map_to_obj(v)]

但是map_to_obj在列表推导中两次调用该方法似乎并不好。

有没有一种方法可以在列表推导中包含局部变量,以使其具有更好的性能?

还是编译器自动对其进行优化?

这是我想要的:

(sml like)
[let mapped = map_to_obj(v) in for v in v_list if mapped end]

问题答案:

从开始Python 3.8,并引入赋值表达式(PEP
572)
:=运算符),可以在列表推导中使用局部变量,以避免调用同一函数两次:

在我们的例子中,我们可以使用表达式的结果来过滤列表时将的评估命名map_to_obj(v)为变量o。并因此o用作映射值:

[o for v in [v1, v2, v3, v4] if (o := map_to_obj(v))]


 类似资料:
  • 问题内容: 我正在一个项目上,我想让我的索引在滚动时加载更多内容。我想设置一个全局变量来保存页面已加载多少次。我的项目结构如下: 首先,我在中声明全局变量: 皮查姆(Pycharm)警告 在: 还有 我也引用了global-variable-and-python-flask 但我没有main()函数。在Flask中设置全局变量的正确方法是什么? 问题答案: 你没有在定义,只是在声明,所以就好像在说

  • 问题内容: 如果我有一个函数(在Python 2.5.2中)像这样: 我的问题是: 如何在 不 使用函数内部的 locals()的 情况下 从外部 获取 函数的局部变量(a,b)?(反射的种类) 是否可以从外部设置局部变量(例如 x ),以便注释行起作用?(我知道这听起来很奇怪)。 提前致谢。 编辑 : 每个人都在寻找用例。但这是一个奇怪的情况。(不要怪我,我没有创造出来)。这是场景: 我有一个包

  • 但是我想存储一些复杂的对象,像这样 context-param不可能做到这一点,我还能在Java或Spring中使用什么?

  • 问题内容: 如何在执行Update语句时设置变量?我似乎无法弄清楚语法。 所以我想要下面这样的东西,但是它说语法是错误的: 问题答案: 这个有可能 :- 设置整数(不递增)

  • 问题内容: 我对JavaScript比较陌生,我想我知道回调函数的工作原理,但是在搜索Web几个小时后,我仍然不明白为什么我的代码不起作用。 我正在提出一个AJAX请求,该请求返回一个字符串数组。我正在尝试将此数组设置为局部变量,但是一旦执行回调函数,它似乎就失去了它的值。 在控制台中,显示为未定义。谁能向我解释为什么未设置此参数,以及如何在回调函数中设置局部变量。 问题答案: 这里的问题是aja

  • 问题内容: 如何在Python中动态设置局部变量(变量名是动态的)? 问题答案: 与已经发布的其他答案相反,你不能直接修改并期望它可以正常工作。 修改未定义。在函数外部,当和相同时,它将起作用;在一个函数内部通常将不起作用。 使用字典,或在对象上设置属性: 或者,如果你愿意,可以使用一个类: 编辑:访问不是函数的名称空间中的变量(因此,模块,类定义,实例)通常是通过字典查找来完成的(如Sven在注