浅谈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获取Windows或Linux主机名称通用函数分享
Nov 22 Python
python正则表达式re之compile函数解析
Oct 25 Python
Python基于OpenCV实现视频的人脸检测
Jan 23 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
python 画二维、三维点之间的线段实现方法
Jul 07 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
Python3.7+tkinter实现查询界面功能
Dec 24 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
python 下载文件的几种方式分享
Apr 07 Python
Python3的进程和线程你了解吗
Mar 16 Python
全网非常详细的pytest配置文件
Jul 15 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
php单件模式结合命令链模式使用说明
2008/09/07 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
curl和libcurl的区别简介
2015/07/01 PHP
php数据访问之查询关键字
2016/05/09 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
python中实现定制类的特殊方法总结
2014/09/28 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
体育比赛口号
2014/06/09 职场文书
立志成才演讲稿
2014/09/04 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
商务邀请函
2015/01/30 职场文书
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis