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 相关文章推荐
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
Python字符串详细介绍
May 09 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
浅谈对yield的初步理解
May 29 Python
Tensorflow卷积神经网络实例
May 24 Python
python采集微信公众号文章
Dec 20 Python
python 常见的反爬虫策略
Sep 27 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
用python批量解压带密码的压缩包
May 31 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利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
php数组键名技巧小结
2015/02/17 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
python的re正则表达式实例代码
2018/01/24 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
django-csrf使用和禁用方式
2020/03/13 Python
Python函数参数分类原理详解
2020/05/28 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
生产管理的三大手法
2013/11/11 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
网络管理员岗位职责
2014/03/17 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
婚庆公司计划书
2014/09/15 职场文书
优秀教师单行材料
2014/12/16 职场文书