浅谈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爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
python基于phantomjs实现导入图片
May 13 Python
Python使用wxPython实现计算器
Jan 30 Python
mac 安装python网络请求包requests方法
Jun 13 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
Django 用户认证组件使用详解
Jul 23 Python
python实现的发邮件功能示例
Sep 11 Python
淘宝秒杀python脚本 扫码登录版
Sep 19 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
详解python字符串驻留技术
May 21 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 Python
python turtle绘图命令及案例
Nov 23 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开发
2015/09/28 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
python字典多条件排序方法实例
2014/06/30 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
python3实现猜数字游戏
2020/12/07 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
python打包生成so文件的实现
2020/10/30 Python
Python jieba库分词模式实例用法
2021/01/13 Python
如何选择使用结构还是类
2014/05/30 面试题
最新的互联网创业计划书
2014/01/10 职场文书
创意活动策划书
2014/01/15 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
学习与创新自我评价
2015/03/09 职场文书
喋血孤城观后感
2015/06/08 职场文书
2015大一新生军训感言
2015/08/01 职场文书
MySQL索引失效场景及解决方案
2022/07/23 MySQL