浅谈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的Flask框架中实现分页功能的教程
Apr 20 Python
Python按行读取文件的简单实现方法
Jun 22 Python
Python给你的头像加上圣诞帽
Jan 04 Python
TensorFlow实现Batch Normalization
Mar 08 Python
Django渲染Markdown文章目录的方法示例
Jan 02 Python
Python多进程fork()函数详解
Feb 22 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
Python Web版语音合成实例详解
Jul 16 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
Python的几种主动结束程序方式
Nov 22 Python
PyTorch中的Variable变量详解
Jan 07 Python
Python如何用filter函数筛选数据
Mar 05 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
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
PHP 断点续传实例详解
2017/11/11 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
详解原生JS回到顶部
2019/03/25 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
Python语言的12个基础知识点小结
2014/07/10 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
Python正则捕获操作示例
2017/08/19 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
python使用tornado实现简单爬虫
2018/07/28 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
Python排序函数的使用方法详解
2020/12/11 Python
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
结婚周年感言
2014/02/24 职场文书
目标管理责任书
2014/04/15 职场文书
求职信的正确写法
2014/07/10 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python