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 制作图片转pdf工具
Jan 30 Python
Python探索之Metaclass初步了解
Oct 28 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
Nov 21 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
Feb 28 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
python实战之用emoji表情生成文字
May 08 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 存储文本换行实现方法
2010/01/05 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
php解决安全问题的方法实例
2019/09/19 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
List Installed Hot Fixes
2007/06/12 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
微信小程序App生命周期详解
2018/01/31 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
盛大笔试题
2016/11/05 面试题
如何唤起类中的一个方法
2013/11/29 面试题
入股协议书范本
2014/04/14 职场文书
后备干部推荐材料
2014/12/24 职场文书
作弊检讨书范文
2015/05/06 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书