浅谈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基础教程之python消息摘要算法使用示例
Feb 10 Python
Python设计模式之抽象工厂模式
Aug 25 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
Python箱型图处理离群点的例子
Dec 09 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
浅谈Python中的生成器和迭代器
Jun 19 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/04 咖啡文化
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
如何快速上手Vuex
2017/02/14 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
python使用socket连接远程服务器的方法
2015/04/29 Python
python抓取百度首页的方法
2015/05/19 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
Python线程指南分享
2019/11/19 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
如何利用python 读取配置文件
2021/01/06 Python
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
公务员保密承诺书
2014/03/27 职场文书
先进学校事迹材料
2014/12/30 职场文书