浅谈Python中range和xrange的区别


Posted in Python onDecember 20, 2017

range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列。xrange也有相同的功能, 今天来看下它们之间的不同。

range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。

range示例:

>>> range(6)
[0, 1, 2, 3, 4, 5]
>>> range(1,6)
[1, 2, 3, 4, 5]
>>> range(0,6,2)
[0, 2, 4]

xrange 函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。

特别提醒: xrange函数在Python3中已经取消,在python3中,range()这种实现被移除了,保留了xrange()的实现,且将xrange()重新命名成range()。所以Python3不能使用xrange,只能使用range

xrange示例:

>>> xrange(6)
xrange(6) # 注意:这里输出的和range就不同喽
>>> list(xrange(6))
[0, 1, 2, 3, 4, 5]
>>> xrange(1, 6)
xrange(1, 6)
>>> list(xrange(1, 6))
[1, 2, 3, 4, 5]
>>> 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

最后,再说一次, Python3中已经取消了xrange方法, 直接使用range即可!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
Django实现基于类的分页功能
Oct 31 Python
Python TKinter如何自动关闭主窗口
Feb 26 Python
Python使用configparser读取ini配置文件
May 25 Python
python中类与对象之间的关系详解
Dec 16 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
Pandas-DataFrame知识点汇总
Mar 16 Python
python机器学习实战之树回归详解
Dec 20 #Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 #Python
python机器学习实战之K均值聚类
Dec 20 #Python
Python绘制3d螺旋曲线图实例代码
Dec 20 #Python
python机器学习实战之最近邻kNN分类器
Dec 20 #Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
Dec 20 #Python
浅谈Python实现Apriori算法介绍
Dec 20 #Python
You might like
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
php生成word并下载代码实例
2019/03/15 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
JavaScript日历实现代码
2010/09/12 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
机电一体化职业规划书
2014/01/07 职场文书
单位消防安全制度
2014/01/12 职场文书
大学生毕业鉴定
2014/01/31 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技