浅谈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框架中reactor事件管理器的用法
May 25 Python
浅析Python函数式编程
Oct 06 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
pip指定python位置安装软件包的方法
Jul 12 Python
一行Python代码制作动态二维码的实现
Sep 09 Python
tensorflow 环境变量设置方式
Feb 06 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
Python numpy多维数组实现原理详解
Mar 10 Python
安装多个版本的TensorFlow的方法步骤
Apr 21 Python
Python接口自动化测试的实现
Aug 28 Python
详解pandas赋值失败问题解决
Nov 29 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
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
python中的set实现不重复的排序原理
2018/01/24 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
打架检讨书50字
2014/01/11 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
2014年团委工作总结
2014/11/13 职场文书
六一儿童节开幕词
2015/01/29 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
2015学校年度工作总结
2015/05/11 职场文书
采购部年度工作总结
2015/08/13 职场文书
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS