我有一个方法,它接受一个列表并返回一个对象:
# 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在注