浅谈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 with用法实例
Apr 14 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
Python切片知识解析
Mar 06 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
Python只用40行代码编写的计算器实例
May 10 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
python之消除前缀重命名的方法
Oct 21 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
python3访问字典里的值实例方法
Nov 18 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
PHP脚本的10个技巧(8)
2006/10/09 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
理解javascript封装
2016/02/23 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
python使用tornado实现简单爬虫
2018/07/28 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Python连接Impala实现步骤解析
2020/08/04 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
物流创业计划书
2014/02/01 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
物流业务员岗位职责
2015/04/03 职场文书
学生会部长竞选稿
2015/11/19 职场文书