Python列表推导式与生成器表达式用法示例


Posted in Python onFebruary 08, 2018

本文实例讲述了Python列表推导式与生成器表达式用法。分享给大家供大家参考,具体如下:

和列表一样,列表推导式也采用方括号[]表示,并且用到了一个简写版的for循环,第一部分是一个生成结果列表元素的表达式,第二部分是一个输入表达式上的循环。阅读理解列表表达式的推荐做法是先从里面的for循环开始,向右查看是否有if条件,然后将推导式开始的那个表达式映射到每一个匹配的元素上去。

>>> even_numbers = [x for x in range(10) if x%2 == 0]
>>> even_numbers
[0,2,4,6,8]

以上例子展示了使用if语句来过滤元素。

Python还支持另外一种和列表表达式类似的结构,叫做生成器表达式(generator expression),除了它有一种称之为“惰性计算”的特点以外,它和列表推导式的用法基本一致。它的工作方式是每次处理一个对象,而不是一口气处理和构造整个数据结构,这样做的潜在优点是可以节省大量的内存。

>>> even_numbers = (x for x in range(10000) if x%2 == 0)
>>> even_numbers
<generator object at 0x....>

在处理大量的数据是,最好考虑生成器表达式而不是列表推导式。

另一个列表推导式和生成器表达式的例子是:

>>> data = ['abc','def','I use python', 'hong201']
>>> sum([len(word) for word in data])
25
>>> sum(len(word) for word in data)
25

enumerate()是一个同时能让你迭代和计数的内置函数,而for循环自身只能迭代而没办法计数:

>>> data = [123,"abc",3.14]
>>> for i in enumerate(data):
...   print i
...
(0, 123)
(1, 'abc')
(2, 3.14)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
Python使用metaclass实现Singleton模式的方法
May 05 Python
python实现中文输出的两种方法
May 09 Python
解读Python中degrees()方法的使用
May 18 Python
Python验证码识别处理实例
Dec 28 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
python机器学习之神经网络(三)
Dec 20 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
使用python+whoosh实现全文检索
Dec 09 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
详解python OpenCV学习笔记之直方图均衡化
Feb 08 #Python
python OpenCV学习笔记实现二维直方图
Feb 08 #Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 #Python
Python编程argparse入门浅析
Feb 07 #Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 #Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 #Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 #Python
You might like
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
快速入手Python字符编码
2016/08/03 Python
python实现日常记账本小程序
2018/03/10 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
什么是Rollback Segment
2013/04/22 面试题
世界经理人咨询有限公司面试
2014/09/23 面试题
sealed修饰符是干什么的
2012/10/23 面试题
岗位职责的含义
2013/11/17 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
死者家属慰问信
2015/03/24 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
公司的力量观后感
2015/06/05 职场文书
交通安全教育心得体会
2016/01/15 职场文书
导游词之五台山
2019/10/11 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python