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 15 Python
Python学习之asyncore模块用法实例教程
Sep 29 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
Python语言实现百度语音识别API的使用实例
Dec 13 Python
Python装饰器模式定义与用法分析
Aug 06 Python
Selenium定位元素操作示例
Aug 10 Python
windows下python安装小白入门教程
Sep 18 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Python日期时间Time模块实例详解
Apr 15 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
jquery json 实例代码
2010/12/02 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
Python yield与实现方法代码分析
2018/02/06 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
自荐信怎么写好
2013/11/11 职场文书
人事主管岗位职责范本
2013/12/04 职场文书
中专生职业生涯规划书范文
2013/12/29 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
房地产推广策划方案
2014/05/19 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
调解书格式范本
2015/05/20 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
小学数学国培研修日志
2015/11/13 职场文书