比较Python中的列表推导式和map(),filter()函数
2023-06-13 09:18:30 时间
比较 Python 中的列表推导式和 map(),reduce()函数
对一个列表(迭代器)中的元素进行批量处理是一个很常见的业务需求,在 Python 中,一般有三种解决方案:for
循环,列表推导式,或者map()
,filter()
函数。
例如我们计算一下 100 以内奇数的平方和。
# for loop
total = 0
for x in range(100):
if x % 2:
total += x * x
# list comprehension
sum(x * x for x in range(100) if x % 2)
# 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
循环会使代码更好理解和可维护。
相关文章
- Python基础19-面向对象(高级)
- python第三方库的安装方法有哪些_如何安装python的第三方库
- pycharm配置python运行环境_C中调用Python
- python实现矩阵的转置_Python实现矩阵转置的方法分析
- 2022春节贺岁档电影开分,水门桥不理想,四海崩了!用Python一探究竟
- python字符串转化列表_Python列表到字符串的转换[通俗易懂]
- xsrf form html,python – tornado开启了xsrf_cookies,在ckeditor中上传文件如何传入xsrf_form_html()?…
- python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)[通俗易懂]
- Python中break和continue的区别
- python海龟作图红绿灯_海龟作图—用Python绘图
- Python做一个简单的在线编辑器[通俗易懂]
- 【说站】python中单向通信TCP服务器的搭建
- 【说站】python匿名函数lambda的注意点
- 【说站】python导入模块的过程
- Python 生成随机数_python建立随机数列表
- pythonif语句格式_python中if语句的用法
- Python中使用数据类型进行转换命令
- Python路面平整度检测车辆数据——速度修正
- Python学习:1.快速搭建python环境详解编程语言
- 使用Python操作MySQL数据库快速上手(python访问mysql数据库)
- python从MSSQL到Python:一段跨语言的旅程(mssql除以)
- Linux系统下安装Python模块指南(linux安装python模块)
- 手把手教你如何用 OpenCV + Python 实现人脸识别
- Python抓取Discuz!用户名脚本代码
- python解析发往本机的数据包示例(解析数据包)
- 使用python编写批量卸载手机中安装的android应用脚本