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魔法方法-自定义序列详解
Jul 21 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
对python中的xlsxwriter库简单分析
May 04 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
Django框架使用mysql视图操作示例
May 15 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
Python基于traceback模块获取异常信息
Jul 23 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 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
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
传智播客学习之java 反射
2009/11/22 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
js轮播图代码分享
2016/07/14 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
基于Python正确读取资源文件
2020/09/14 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
Java里面有没有全局变量?为什么?
2015/02/06 面试题
护士自我鉴定总结
2014/03/24 职场文书
计划生育标语
2014/06/23 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript