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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
玩转python爬虫之cookie使用方法
Feb 17 Python
python使用pymysql实现操作mysql
Sep 13 Python
深入理解Python中的内置常量
May 20 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
Python3实现的简单验证码识别功能示例
May 02 Python
Tensorflow卷积神经网络实例进阶
May 24 Python
Python unittest 简单实现参数化的方法
Nov 30 Python
python实现汽车管理系统
Nov 30 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 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 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
Python 探针的实现原理
2016/04/23 Python
Python处理中文标点符号大集合
2018/05/14 Python
python 图像平移和旋转的实例
2019/01/10 Python
Python魔法方法功能与用法简介
2019/04/04 Python
python的命名规则知识点总结
2019/10/04 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
给学校建议书范文
2014/05/13 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
MySQL分区表管理命令汇总
2022/03/21 MySQL