您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-列表理解与lambda +过滤器

Python-列表理解与lambda +过滤器

我发现列表理解比filter+ 清晰得多lambda,但请使用任何你更容易理解的列表。

有两件事可能会减慢你对的使用filter

一个函数调用开销:使用Python函数(无论是由def还是创建的lambda)后,过滤器的运行速度可能会比列表理解速度慢。几乎可以肯定,这还不够重要,并且在对代码进行定时并发现它是瓶颈之前,你不应该对性能进行太多考虑,但是区别就在那里。

可能适用的其他开销是,lambda被强制访问作用域变量(value)。这比访问局部变量要慢,并且在Python 2.x中,列表推导仅访问局部变量。如果你使用的是Python 3.x,则列表推导是在单独的函数中运行的,因此它也将value通过闭包进行访问,并且这种区别将不适用。

要考虑的另一个选项是使用生成器而不是列表推导:

def filterbyvalue(seq, value):
   for el in seq:
       if el.attribute==value: yield el

然后,在你的主要代码(这才是真正的可读性)中,你已经用有希望的有意义的函数名称替换了列表理解和过滤器。

python 2022/1/1 18:19:49 有382人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶