浅谈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通过openpyxl生成Excel文件的方法
May 12 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
Python实现身份证号码解析
Sep 01 Python
Django 实现下载文件功能的示例
Mar 06 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
python pandas库的安装和创建
Jan 10 Python
Django MEDIA的配置及用法详解
Jul 25 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
用Python爬虫破解滑动验证码的案例解析
May 06 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
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
python设计模式大全
2016/06/27 Python
Python对List中的元素排序的方法
2018/04/01 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
数学系毕业生求职信
2014/05/29 职场文书
男性健康日的活动方案
2014/08/18 职场文书
房产授权委托书范本
2014/09/22 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
服务员岗位职责范本
2015/04/09 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
创业计划书之干洗店
2019/09/10 职场文书
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript
HttpClient实现文件上传功能
2022/08/14 Java/Android