浅谈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字符串的方法与操作大全
Jan 30 Python
详谈python中冒号与逗号的区别
Apr 18 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
python根据时间获取周数代码实例
Sep 30 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
Mar 06 Python
如何学习Python time模块
Jun 03 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
Python 中数组和数字相乘时的注意事项说明
May 10 Python
python数据处理之Pandas类型转换
Apr 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
使用PHP模拟HTTP认证
2006/10/09 PHP
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
浅析PHP Socket技术
2013/08/02 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
node.js基础知识小结
2018/02/26 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
求职毕业生自荐书
2014/02/08 职场文书
统招统分证明
2015/06/23 职场文书
离职信范本
2015/06/23 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL