浅谈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中操作文件之write()方法的使用教程
May 25 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
Python键盘输入转换为列表的实例
Jun 23 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
简单了解python的一些位运算技巧
Jul 13 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
Python socket 套接字实现通信详解
Aug 27 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
成教毕业生自我鉴定
2013/10/23 职场文书
办公文员的工作岗位职责
2013/11/12 职场文书
晚会主持词开场白
2014/03/17 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
初一学生期末评语
2014/04/24 职场文书
防沙治沙典型材料
2014/05/07 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android