深入理解Python中range和xrange的区别


Posted in Python onNovember 26, 2017

三水点靠木已经给大家介绍过range和xrange的区别的基础知识,有兴趣的朋友可以参阅:

本次小编给大家带来的是深入理解range和xrange之间的区别。

两种用法介绍如下:

1.range([start], stop[, step])

返回等差数列。构建等差数列,起点是start,终点是stop,但不包含stop,公差是step。

start和step是可选项,没给出start时,从0开始;没给出step时,默认公差为1。

例如:

>>> range(10)               #起点是0,终点是10,但是不包括10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10)              #起点是1,终点是10,但是不包括10
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10,2)             #起点是1,终点是10,步长为2
[1, 3, 5, 7, 9]
>>> range(0,-10,-1)            #起点是1,终点是10,步长为-1 
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0,-10,1)            #起点是0,终点是-10,终点为负数时,步长只能为负数,否则返回空
[]
>>> range(0)               #起点是0,返回空列表
[]
>>> range(1,0)              #起点大于终点,返回空列表
[]

2.xrange([start], stop[, step])
xrange与range类似,只是返回的是一个"xrange object"对象,而非数组list。
要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。
例如:

>>> lst = xrange(1,10)
>>> lst
xrange(1, 10)
>>> type(lst)
<type 'xrange'>
>>> list(lst)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

区别如下:

1.range和xrange都是在循环中使用,输出结果一样。

2.range返回的是一个list对象,而xrange返回的是一个生成器对象(xrange object)。

3.xrange则不会直接生成一个list,而是每次调用返回其中的一个值,内存空间使用极少,因而性能非常好。

补充点:

#以下三种形式的range,输出结果相同。
>>> lst = range(10)
>>> lst2 = list(range(10))
>>> lst3 = [x for x in range(10)]
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst3
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst == lst2 and lst2 == lst3
True

注意:Python 3.x已经去掉xrange,全部用range代替。

Python 相关文章推荐
Python使用MD5加密字符串示例
Aug 22 Python
Python合并字符串的3种方法
May 21 Python
python框架django基础指南
Sep 08 Python
【python】matplotlib动态显示详解
Apr 11 Python
利用python实现周期财务统计可视化
Aug 25 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
解决reload(sys)后print失效的问题
Apr 25 Python
如何在python中执行另一个py文件
Apr 30 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
在Django中使用MQTT的方法
May 10 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
Python安装使用Scrapy框架
Apr 12 Python
PyCharm在win10的64位系统安装实例
Nov 26 #Python
python shell根据ip获取主机名代码示例
Nov 25 #Python
python自动裁剪图像代码分享
Nov 25 #Python
分享一个简单的python读写文件脚本
Nov 25 #Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 #Python
python多进程实现进程间通信实例
Nov 24 #Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 #Python
You might like
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
php静态文件生成类实例分析
2015/01/03 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
js判断样式className同时增加class或删除class
2013/01/30 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python出现segfault错误解决方法
2016/04/16 Python
Python selenium 三种等待方式解读
2016/09/15 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
html5教程画矩形代码分享
2013/12/04 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
秋季运动会广播稿
2014/02/22 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
考研经验交流会策划书
2015/11/02 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python