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 07 Python
Python函数中定义参数的四种方式
Nov 30 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
Python爬虫实例爬取网站搞笑段子
Nov 08 Python
浅谈flask截获所有访问及before/after_request修饰器
Jan 18 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
通过代码实例了解Python异常本质
Sep 16 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
python反扒机制的5种解决方法
Feb 06 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
php+mysql数据库查询实例
2015/01/21 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
php数组和链表的区别总结
2019/09/20 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
常用的js方法合集
2017/03/10 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
英语课外活动总结
2014/08/27 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
青年文明号汇报材料
2014/12/23 职场文书
导游词之任弼时故居
2020/01/07 职场文书