浅谈Python中列表生成式和生成器的区别


Posted in Python onAugust 03, 2015

列表生成式语法:

[x*x for x in range(0,10)] //列表生成式,这里是中括号
//结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(x*x for x in range(0,10)) //生成器, 这里是小括号
//结果 <generator object <genexpr> at 0x7f0b072e6140>

二者的区别很明显:
一个直接返回了表达式的结果列表, 而另一个是一个对象,该对象包含了对表达式结果的计算引用, 通过循环可以直接输出

g = (x*x for x in range(0,10))
for n in g:
  print n

结果

0
1
4
9
16
25
36
49
64
81

    当表达式的结果数量较少的时候, 使用列表生成式还好, 一旦数量级过大, 那么列表生成式就会占用很大的内存,
    而生成器并不是立即把结果写入内存, 而是保存的一种计算方式, 通过不断的获取, 可以获取到相应的位置的值,所以占用的内存仅仅是对计算对象的保存

Python 相关文章推荐
Python时间戳与时间字符串互相转换实例代码
Nov 28 Python
python改变日志(logging)存放位置的示例
Mar 27 Python
从零学Python之入门(二)基本数据类型
May 25 Python
python使用nntp读取新闻组内容的方法
May 08 Python
Python中利用xpath解析HTML的方法
May 14 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
Nov 07 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
pyCharm 实现关闭代码检查
Jun 09 Python
如何用python插入独创性声明
Mar 31 Python
Python OpenCV实现图像模板匹配详解
Apr 07 Python
详解Python3中的Sequence type的使用
Aug 01 #Python
将Python代码嵌入C++程序进行编写的实例
Jul 31 #Python
Python制作数据导入导出工具
Jul 31 #Python
简单理解Python中的装饰器
Jul 31 #Python
python简单分割文件的方法
Jul 30 #Python
Python读取网页内容的方法
Jul 30 #Python
python查看FTP是否能连接成功的方法
Jul 30 #Python
You might like
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
php支付宝APP支付功能
2020/07/29 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
python3 实现调用串口功能
2019/12/26 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
python中的插入排序的简单用法
2021/01/19 Python
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
国际贸易专业个人求职信格式
2014/02/02 职场文书
安全生产年活动总结
2014/08/29 职场文书
聚会通知怎么写
2015/04/23 职场文书
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python