python中xrange和range的区别


Posted in Python onMay 13, 2014

range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。
range示例:

>>> range(5)
[0, 1, 2, 3, 4]
>>> range(1,5)
[1, 2, 3, 4]
>>> range(0,6,2)
[0, 2, 4]

xrange 函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。
xrange示例:

>>> xrange(5)
xrange(5)
>>> list(xrange(5))
[0, 1, 2, 3, 4]
>>> xrange(1,5)   
xrange(1, 5)
>>> list(xrange(1,5))
[1, 2, 3, 4]
>>> xrange(0,6,2)
xrange(0, 6, 2)
>>> list(xrange(0,6,2))
[0, 2, 4]

由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用:

for i in range(0, 100):
 print i
for i in xrange(0, 100):
 print i

这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:
a = range(0,100)
print type(a)
print a
print a[0], a[1]

输出结果:

<type 'list'>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
0 1

而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:

a = xrange(0,100)
print type(a)
print a
print a[0], a[1]

输出结果:

<type 'xrange'>
xrange(100)
0 1
Python 相关文章推荐
python访问类中docstring注释的实现方法
May 04 Python
从Python的源码来解析Python下的freeblock
May 11 Python
Python中使用ElementTree解析XML示例
Jun 02 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
python实现弹跳小球
May 13 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
解析Python3中的Import
Oct 13 Python
Java文件与类动手动脑实例详解
Nov 10 Python
Python 如何安装Selenium
May 06 Python
Python Pandas pandas.read_sql函数实例用法
Jun 21 Python
Python初学者必备的文件读写指南
Jun 23 Python
Python中os和shutil模块实用方法集锦
May 13 #Python
Python中的jquery PyQuery库使用小结
May 13 #Python
Python getopt模块处理命令行选项实例
May 13 #Python
Python random模块(获取随机数)常用方法和使用例子
May 13 #Python
Python自动化测试工具Splinter简介和使用实例
May 13 #Python
Python获取远程文件大小的函数代码分享
May 13 #Python
Python FTP操作类代码分享
May 13 #Python
You might like
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
php 判断数组是几维数组
2013/03/20 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
用python实现批量重命名文件的代码
2012/05/25 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
村委会贫困证明
2014/01/14 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
低碳环保倡议书
2014/04/14 职场文书
德育标兵事迹材料
2014/08/24 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python