浅谈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模块详解
Sep 15 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
Django Rest framework频率原理与限制
Jul 26 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
Python Tornado核心及相关原理详解
Jun 24 Python
Python Selenium自动化获取页面信息的方法
Aug 31 Python
Python+Xlwings 删除Excel的行和列
Dec 19 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 Python
pytorch 如何使用amp进行混合精度训练
May 24 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 实现类似js中alert() 提示框
2015/03/18 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
JavaScript Split()方法
2015/12/18 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
python 数据的清理行为实例详解
2017/07/12 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
python编程线性回归代码示例
2017/12/07 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
Python识别处理照片中的条形码
2020/11/16 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
你对IPv6了解程度
2016/02/09 面试题
安全资料员岗位职责
2013/12/14 职场文书
小学教师师德感言
2014/02/10 职场文书
三查三看党性分析材料
2014/02/18 职场文书
《口技》教学反思
2014/02/21 职场文书
读书活动实施方案
2014/03/10 职场文书
合伙经营协议书
2014/04/18 职场文书
软件测试专业推荐信
2014/09/18 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
Python序列化模块JSON与Pickle
2022/06/05 Python
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android