浅谈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 k-近邻算法实例分享
Jun 11 Python
python实现网站的模拟登录
Jan 04 Python
django输出html内容的实例
May 27 Python
简单了解python单例模式的几种写法
Jul 01 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
Aug 09 Python
Django中的FBV和CBV用法详解
Sep 15 Python
python Pillow图像处理方法汇总
Oct 16 Python
Python requests模块cookie实例解析
Apr 14 Python
Python Unittest原理及基本使用方法
Nov 06 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
python简单验证码识别的实现过程
Jun 20 Python
Python requests用法和django后台处理详解
Mar 19 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
php中引用符号(&amp;)的使用详解
2013/11/13 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
python爬取微信公众号文章
2018/08/31 Python
python简单实现AES加密和解密
2019/03/28 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
运动会开幕式解说词
2014/02/05 职场文书
趣味体育活动方案
2014/02/08 职场文书
课程改革实施方案
2014/03/16 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
如何撰写创业策划书
2019/06/27 职场文书
python实现简单倒计时功能
2021/04/21 Python
Python装饰器的练习题
2021/11/23 Python
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android