浅谈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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
python数组过滤实现方法
Jul 27 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
python制作小说爬虫实录
Aug 14 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
django-filter和普通查询的例子
Aug 12 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
如何让python的运行速度得到提升
Jul 08 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
PHP中的extract的作用分析
2008/04/09 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
python查找第k小元素代码分享
2013/12/18 Python
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
Django封装交互接口代码
2020/07/12 Python
Python如何实现线程间通信
2020/07/30 Python
python获取linux系统信息的三种方法
2020/10/14 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
印度在线购物网站:Paytmmall
2019/07/24 全球购物
一套C#面试题
2013/10/09 面试题
如何开发安全的AJAX应用
2014/03/26 面试题
大学四年学习的自我评价分享
2013/12/09 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
1亿有多大教学反思
2014/05/01 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
2016新年问候语大全
2015/11/11 职场文书
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL