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爬取APP下载链接的实现方法
Sep 30 Python
在Python中使用gRPC的方法示例
Aug 08 Python
python 同时运行多个程序的实例
Jan 07 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
Mar 05 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
关于python中remove的一些坑小结
Jan 04 Python
DRF使用simple JWT身份验证的实现
Jan 14 Python
Python实现生活常识解答机器人
Jun 28 Python
Python中的变量与常量
Nov 11 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 快速生成 Flash 动画的方法
2007/03/06 PHP
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
Python 含参构造函数实例详解
2017/05/25 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
浅析Python中字符串的intern机制
2020/10/03 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
写给老师的表扬信
2014/01/21 职场文书
关于元旦的广播稿
2014/02/16 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
三方股东合作协议书
2014/10/28 职场文书