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爬取京东的商品分类与链接
Aug 26 Python
pandas多级分组实现排序的方法
Apr 20 Python
flask中过滤器的使用详解
Aug 01 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
python程序输出无内容的解决方式
Apr 09 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
详解pycharm配置python解释器的问题
Oct 15 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
Dec 07 Python
聊一聊python常用的编程模块
May 14 Python
详解Python自动化之文件自动化处理
Jun 21 Python
pycharm代码删除恢复的方法
Jun 26 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 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
13个PHP函数超实用
2015/10/21 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
在Python中使用列表生成式的教程
2015/04/27 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
python中pdb模块实例用法
2021/01/15 Python
PHP面试题-$message和$$message的区别
2015/12/08 面试题
信息工程学院毕业生推荐信
2013/11/05 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
python数字图像处理实现图像的形变与缩放
2022/06/28 Python