浅谈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装饰器decorator介绍
Nov 21 Python
win系统下为Python3.5安装flask-mongoengine 库
Dec 20 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
Python使用wxPython实现计算器
Jan 30 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
python实现爬取百度图片的方法示例
Jul 06 Python
django-rest-swagger的优化使用方法
Aug 29 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
python TCP包注入方式
May 05 Python
UI自动化定位常用实现方法代码示例
Oct 27 Python
python字典的元素访问实例详解
Jul 21 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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自动重命名文件实现方法
2014/11/04 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
php HTML无刷新提交表单
2016/04/05 PHP
php实现简易计算器
2020/08/28 PHP
javascript document.images实例
2008/05/27 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
浅析vue-router原理
2018/10/19 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Python中的字符串替换操作示例
2016/06/27 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
Python pickle模块实现对象序列化
2019/11/22 Python
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
我的网上商城创业计划书
2013/12/26 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
供货协议书范本
2014/04/22 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
听证通知书
2015/04/24 职场文书
大学感恩节活动总结
2015/05/05 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
MySql数据库触发器使用教程
2022/06/01 MySQL
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js