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内置函数Type()函数一个有趣的用法
Feb 18 Python
python利用lxml读写xml格式的文件
Aug 10 Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
Jan 29 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
python实现按长宽比缩放图片
Jun 07 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
Jul 31 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
Django中的session用法详解
Mar 09 Python
Django如何批量创建Model
Sep 01 Python
Python中如何处理常见报错
Jan 18 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
Zerg建筑一览
2020/03/14 星际争霸
测试您的 PHP 水平的题目
2007/05/30 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
Angular实现form自动布局
2016/01/28 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
Python 字符串操作方法大全
2014/03/11 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
Python json转字典字符方法实例解析
2020/04/13 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
高中班级口号
2014/06/09 职场文书
英语邀请函范文
2015/02/02 职场文书
公务员年终个人总结
2015/02/12 职场文书
二审答辩状范文
2015/05/22 职场文书
z-index不起作用
2021/03/31 HTML / CSS
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
Golang 切片(Slice)实现增删改查
2022/04/22 Golang