浅谈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正则表达式实现截取成对括号的方法
Jan 06 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
python分析作业提交情况
Nov 22 Python
Python合并多个Excel数据的方法
Jul 16 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
Python 脚本获取ES 存储容量的实例
Dec 27 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
tensorflow 环境变量设置方式
Feb 06 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 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程序员工具
2008/05/26 PHP
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
php csv操作类代码
2009/12/14 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python生成九宫格图片
2018/11/19 Python
python命令行参数用法实例分析
2019/06/25 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
python numpy库np.percentile用法说明
2020/06/08 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
高级人员简历的自我评价分享
2013/11/03 职场文书
拉拉队口号
2014/06/16 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
Python机器学习之决策树和随机森林
2021/07/15 Javascript
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
vue修饰符.capture和.self的区别
2022/04/22 Vue.js
Echarts如何重新渲染实例详解
2022/05/30 Javascript