浅谈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框架下使用sqlalchemy库的简单教程
Apr 09 Python
Python中的random()方法的使用介绍
May 15 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
Python中Numpy mat的使用详解
May 24 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
解决python 找不到module的问题
Feb 12 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 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
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jquery实现图片预加载
2015/12/25 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
浅析Python中的序列化存储的方法
2015/04/28 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
python先序遍历二叉树问题
2017/11/10 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
日语专业推荐信
2013/11/12 职场文书
高中军训感言200字
2014/02/23 职场文书
体育教学随笔感言
2014/02/24 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
材料物理专业求职信
2014/09/01 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
A22国内电台短波广播频率表
2022/05/10 无线电