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 list中append()与extend()用法分享
Mar 24 Python
详解Python的Lambda函数与排序
Oct 25 Python
python文件特定行插入和替换实例详解
Jul 12 Python
Python 关于反射和类的特殊成员方法
Sep 14 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
python+django+rest框架配置创建方法
Aug 31 Python
PyQt5实现简单的计算器
May 30 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
python如何变换环境
Jul 21 Python
python3跳出一个循环的实例操作
Aug 18 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
php传值和传引用的区别点总结
2019/11/19 PHP
Javascript注入技巧
2007/06/22 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
Js四则运算函数代码
2012/07/21 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python删除windows垃圾文件的方法
2015/07/14 Python
python利用正则表达式提取字符串
2016/12/08 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
利用python实现AR教程
2019/11/20 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
机械工程系毕业生求职信
2013/09/27 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
委托书怎么写
2014/07/31 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
意向协议书
2015/01/27 职场文书
学生会辞职信
2015/03/02 职场文书
女性励志书籍推荐
2019/08/19 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸