浅谈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中数据爬虫requests库使用方法详解
Feb 11 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
基于python实现学生管理系统
Oct 17 Python
利用python循环创建多个文件的方法
Oct 25 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
Python实战之制作天气查询软件
May 14 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
May 29 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
Python Django框架防御CSRF攻击的方法分析
Oct 18 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
Mar 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
php array_merge下进行数组合并的代码
2008/07/22 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
prototype 的说明 js类
2006/09/07 Javascript
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
详解Python中break语句的用法
2015/05/14 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python中几种导入模块的方式总结
2017/04/27 Python
python实现flappy bird游戏
2018/12/24 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
日语系毕业求职信
2014/07/27 职场文书
初中中等生评语
2014/12/29 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
部门主管竞聘书
2015/09/15 职场文书
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题