浅谈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中获得当前目录和上级目录的实现方法
Oct 12 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
详解python的四种内置数据结构
Mar 19 Python
Python实现打砖块小游戏代码实例
May 18 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
对python3.4 字符串转16进制的实例详解
Jun 12 Python
python 经典数字滤波实例
Dec 16 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
python和js交互调用的方法
Jun 23 Python
通俗讲解python 装饰器
Sep 07 Python
python自动从arxiv下载paper的示例代码
Dec 05 Python
如何利用python正则表达式匹配版本信息
Dec 09 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
几个学习PHP的网址
2006/11/25 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
python实现简易云音乐播放器
2018/01/04 Python
Python使用wxPython实现计算器
2018/01/30 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
老公给老婆的道歉信
2014/01/10 职场文书
表扬信格式
2014/01/12 职场文书
志愿者活动总结报告
2014/06/27 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python