浅谈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写的一个wordpress的采集程序
Feb 27 Python
Python通过Django实现用户注册和邮箱验证功能代码
Dec 11 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 Python
python如何爬取个性签名
Jun 19 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
python如何将两个txt文件内容合并
Oct 18 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
python文件处理fileinput使用方法详解
Jan 02 Python
python中Ansible模块的Playbook的具体使用
May 28 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
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
js实现日历的简单算法
2017/01/24 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python 可爱的大小写
2008/09/06 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
用python实现的线程池实例代码
2018/01/06 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
演讲主持词
2014/03/18 职场文书
疾病防治方案
2014/05/31 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
钢琴师观后感
2015/06/12 职场文书