前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >比较Python中的列表推导式和map(),filter()函数

比较Python中的列表推导式和map(),filter()函数

作者头像
杜逸先
发布2023-04-13 16:17:51
1.8K0
发布2023-04-13 16:17:51
举报
文章被收录于专栏:追不上乌龟的兔子

比较 Python 中的列表推导式和 map(),reduce()函数

对一个列表(迭代器)中的元素进行批量处理是一个很常见的业务需求,在 Python 中,一般有三种解决方案:for循环,列表推导式,或者map(),filter()函数。

例如我们计算一下 100 以内奇数的平方和。

代码语言:javascript
复制
# for loop
total = 0
for x in range(100):
    if x % 2:
        total += x * x
代码语言:javascript
复制
# list comprehension
sum(x * x for x in range(100) if x % 2)
代码语言:javascript
复制
# map(), filter()
sum(map(lambda x: x * x, filter(lambda x: x % 2, range(100))))

for循环方案最容易理解但有些繁琐,列表推导式方案就简洁了很多,map(),filter()方案存在一个问题就是要理解它们嵌套关系和执行顺序。

三种方案的效率也可以进行一下比较。

可以看到 for 循环和列表推导式的效率是相近的,而map(),filter()方案就慢很多,这是因为map(),filter()方案中进行了大量的函数调用,而 Python 解释器对列表推导式有专门的优化。

我按照自己的尺度给三种方案做了一个评价。

方案

可理解度

简洁度

执行效率

for loop

★★★

★★★

list comprehension

★★

★★★

★★★

map(),filter()

★★

★★

综合而言,在 Python 中进行列表(迭代器)的处理,列表推导式是更简洁,效率更高的方案,也更 Pythonic,不过当列表推导式过于复杂的时候,转而使用for循环会使代码更好理解和可维护。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-222,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 比较 Python 中的列表推导式和 map(),reduce()函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档