浅谈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爬虫headers设置后无效的解决方法
Oct 21 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
python自动化UI工具发送QQ消息的实例
Aug 27 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
在Python中通过threshold创建mask方式
Feb 19 Python
初学者学习Python好还是Java好
May 26 Python
python 识别登录验证码图片功能的实现代码(完整代码)
Jul 03 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
Python学习之包与模块详解
Mar 19 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
dedecms模版制作使用方法
2007/04/03 PHP
php中hashtable实现示例分享
2014/02/13 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
php无限极分类实现方法分析
2019/07/04 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
js实现消息滚动效果
2017/01/18 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
Python爬取网页信息的示例
2020/09/24 Python
python如何写个俄罗斯方块
2020/11/06 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书