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学习笔记 下载
Feb 10 Python
python读文件逐行处理的示例代码分享
Dec 27 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
postman传递当前时间戳实例详解
Sep 14 Python
python处理document文档保留原样式
Sep 23 Python
Python Django框架模板渲染功能示例
Nov 08 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
MATLAB数学建模之画图汇总
Jul 16 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 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面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
vue如何截取字符串
2019/05/06 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
英语生日邀请函
2014/01/23 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
人事专员岗位说明书
2014/07/29 职场文书
见义勇为事迹材料
2014/12/24 职场文书
初三语文教学计划
2015/01/22 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android