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 enumerate遍历数组示例应用
Sep 06 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
python列表返回重复数据的下标
Feb 10 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 Python
python多次执行绘制条形图
Apr 20 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自定义的格式化时间示例代码
2013/12/05 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
xtree.js 代码
2007/03/13 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
Python使用plotly绘制数据图表的方法
2017/07/18 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
Python使用folium excel绘制point
2019/01/03 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
游戏商店:Eneba
2020/04/25 全球购物
EJB面试题
2015/07/28 面试题
业务助理岗位职责
2013/11/18 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
社区服务活动总结
2014/05/07 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
售后客服个人自我评价
2014/09/14 职场文书
财务整改报告范文
2014/11/05 职场文书
市场部岗位职责范本
2015/04/15 职场文书
入党介绍人意见范文
2015/06/01 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
速龙x4-860k处理器相当于i几
2022/04/20 数码科技