浅谈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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
简单介绍Python中的try和finally和with方法
May 05 Python
深入学习python的yield和generator
Mar 10 Python
Python Socket传输文件示例
Jan 16 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
python实时监控cpu小工具
Jun 21 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
Python headers请求头如何实现快速添加
Nov 03 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
php4的彩蛋
2006/10/09 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
浅析vue-router原理
2018/10/19 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
Python修改列表值问题解决方案
2020/03/06 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
翻译学院毕业生自荐书
2014/02/02 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
ant design charts 获取后端接口数据展示
2022/05/25 Javascript
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android