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使用arp欺骗伪造网关的方法
Apr 24 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
Python占用的内存优化教程
Jul 28 Python
Python 硬币兑换问题
Jul 29 Python
python爬虫增加访问量的方法
Aug 22 Python
python中Lambda表达式详解
Nov 20 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
Django日志及中间件模块应用案例
Sep 10 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
PHPCMS的使用小结
2010/09/20 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
Javascript String.replace的妙用
2009/09/08 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
Python对象属性自动更新操作示例
2018/06/15 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
OpenCV 边缘检测
2019/07/10 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
python如何建立全零数组
2020/07/19 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
"序列点" 是什么
2016/07/29 面试题
农村产权制度改革实施方案
2014/03/21 职场文书
关于学习的演讲稿
2014/05/10 职场文书
法制宣传月活动方案
2014/05/11 职场文书
男性健康日的活动方案
2014/08/18 职场文书
毕业感言怎么写
2015/07/31 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
Java详细解析==和equals的区别
2022/04/07 Java/Android