浅谈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在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
Python获取指定字符前面的所有字符方法
May 02 Python
PyQt5显示GIF图片的方法
Jun 17 Python
python 猴子补丁(monkey patch)
Jun 26 Python
10款最好的Python开发编辑器
Jul 03 Python
Django 请求Request的具体使用方法
Nov 11 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
Python实现自动整理文件的脚本
Dec 17 Python
用python批量移动文件
Jan 14 Python
Anaconda配置各版本Pytorch的实现
Aug 07 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生成图形(Libchart)实例
2013/11/06 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
使用python统计文件行数示例分享
2014/02/21 Python
Python性能提升之延迟初始化
2016/12/04 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
深入理解Python中的*重复运算符
2017/10/28 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
python字典与json转换的方法总结
2020/12/28 Python
Python爬取梨视频的示例
2021/01/29 Python
台湾家适得:Homeget
2019/02/11 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
十佳少先队员演讲稿
2014/09/12 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
离婚财产处理协议书
2014/09/30 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技