[Python]range与xrange用法对比
【整理内容】具体如下:
先来看如下示例:
>>>x=xrange(0,8)>>>print x
xrange(8)>>>print x[0]
0>>>print x[7]
7>>>print x[8]
Traceback (most recent call last):File "<stdin>", line 1, in <module>IndexError: xrange object index out of range>>>x=range(0,8)>>>print x
[0, 1, 2, 3, 4, 5, 6, 7]>>>print x[0]
0>>>print x[8]
Traceback (most recent call last):File "<stdin>", line 1, in <module>IndexError: list index out of rangerange([start,] stop [,step])->list of integers
range(start, stop, step)返回一个递增或递减的数字列表,列表的元素值由三个参数决定:
start表示列表开始的值,可省,默认为“0”
stop表示列表结束的值,该参数不可缺少
参数step表示步长,可省,默认值为“1”
range返回的是一个列表,一次性计算并返回所有的值
xrange是一个类,返回的是一个生成器:
生成器是一个可迭代对象,在对生成器进行迭代时,元素是逐个被创建的
使用xrange()进行遍历,每次遍历只返回一个值
一般来看,在对大序列进行迭代的时候,因为xrange的特性,所以它会比较节约内存
因此,xrange的执行效率要高于range
首先,我们来看Python 2里range()。它是一个内置函数,这个函数用于创建整数等差数列。因此它常被用于for循环。
从官方帮助文档,我们可以看出下面的特性:
1、内置函数(built-in)
2、接受3个参数分别是start, stop和step(其中start和step是可选的,stop是必需的)
3、如果没有指定start,默认从0开始(python都是从0开始的)
4、如果没有指定step,默认step是1。(step不能是0,如果指定step为0,“ValueError: range() step argument must not be zero”将会被抛出)
接下来看看xrange()。 xrange()虽然也是内置函数,但是它被定义成了Python里一种类型(type),这种类型就叫xrange。我们从Python 2的interactive shell里很容易看到这点。
我们从xragne的官方帮助文档可以看出:
xrange和range的参数和用法是相同的。只是xrange()返回的不再是一个数列,而是一个xrange对象。这个对象可以按需生成参数指定范围内的数字(即元素)。
由于xrange对象是按需生成单个的元素,而不像range那样,首先创建整个list。所以,在相同的范围内,xrange占用的内存空间将更小,xrange也会更快。
实际上,xrange由于是在循环内被调用时才会生成元素,因此无论循环多少次,只有当前一个元素占用了内存空间,且每次循环占用的都是相同的单个元素空间。
我们可以粗略的认为,相同n个元素的话,range占用的空间是xrange的n倍。因此,在循环很大情况下,xrange的高效率和快速将表现的很明显。
总结:
1、range()返回整个list。
2、xrange()返回的是一个xrange object,且这个对象是个iterable。
3、两者都可用于for循环。
4、xrange()占用更少的内存空间,因为循环时xrange()只生成当前的元素,不像range()一开始就成生成完整的list。
这就是在Python 2里range和xrange的相同点和区别。
range()和xrange() 在Python 2里是两种不同的实现。但是在Python 3里,range()这种实现被移除了;保留了xrange()的实现,且将xrange()重新命名成range()。
[Python]range与xrange用法对比的更多相关文章
- python range() 和xrange()的区别
Help on built-in function range in module __builtin__: range(...) range(stop) -> list of integers ...
- python range 和xrange
对于这两个好像功能都差不多,这两个经常会被搞混,所以今天一定要把这个完全弄清楚. 首先我们看看range: range([start,] stop[, step]),根据start与stop指定的范围 ...
- python range函数的用法
range 函数是Python内置函数.可创建一个整数列表,一般用在 for 循环中. 函数语法:range(start, stop[, step]) start: 计数从 start 开始.默认是从 ...
- python2中range和xrange的区别
range和xrange用法相同,不同的是xrange不是生成一个序列,而是作为一个生成器,即生成一个取出一个 相对来说,xrange比range性能优化很多,因为不需要一下子开辟一块很大的内存,特别 ...
- python中xrange用法分析
本文实例讲述了python中xrange用法.分享给大家供大家参考.具体如下: 先来看如下示例: >>> x=xrange(0,8) >>> print x xra ...
- python 内置函数range和xrange
range range 是一种类型(type),它是一个数字的序列,而且是不可变的,通常用在for循环中. class range(stop)class range(start, stop [, st ...
- Python中的range和xrange区别
range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. range示例: >>> r ...
- 【Python那些事儿之十】range()和xrange()
by Harrison Feng in Python 无论是range()还是xrange()都是Python里的内置函数.这个两个内置函数最常用在for循环中.例如: >>> fo ...
- Python range() xrange()
range 前面小节已经说明了,range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. xrange用法与 range 完全 ...
随机推荐
- linux下D盘(适用于U盘、硬盘等一切移动存储设备)策略(比格式化猛,因为是不可恢复!)
关于这样的资料,在百度上还是比较少的,今天就共享出来,在电脑主机上插上你的U盘,输入以下命令: dd if=/dev/zero of=/dev/sdb bs=1024 count=102400 ...
- Android开发技巧——高亮的用户操作指南
Android开发技巧--高亮的用户操作指南 2015-12-15补记: 发现使用PopupWindow进行遮罩层的显示,在华为P7上会有问题.具体表现为:画出来的高亮部分会偏下.原因为:通过view ...
- React Native入门 认识Flexbox布局
Flexbox布局是由W3C在09年提出的在Web端取代CSS盒子模型的一种布局方式. ReactNative实现了Flexbox布局的大部分功能. Flexbox布局所使用的属性,基本可以分为两大类 ...
- Spring Cloud入门教程-Hystrix断路器实现容错和降级
简介 Spring cloud提供了Hystrix容错库用以在服务不可用时,对配置了断路器的方法实行降级策略,临时调用备用方法.这篇文章将创建一个产品微服务,注册到eureka服务注册中心,然后我们使 ...
- Eclipse 3.5 以后安装插件很慢的解决办法
1 .除非你需要,否则不要选择"联接到所有更新站点" 在安装对话框里有一个小复选框,其标示为"在安装过程中联接到所有更新站点从而找到所需的软件."从表面上看,这 ...
- c语言,文件操作总结
C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来 ...
- 分享一个开源的网盘下载工具BaiduPCS-Go
大家在使用网盘的时候,一定忍受不了限速下载的速度.今天给大家分享一个开源的网盘下载项目BaiduPCS-Go.Go语言编写,仿 Linux shell 文件处理命令的百度网盘命令行客户端.多平台支持, ...
- Java虚拟机-内存tips
java虚拟机内存可以分为独占区和共享区. 独占区:虚拟内存栈.本地方法栈.程序计数器. 共享区:方法区.Java堆(用来存放对象实例). 程序计数器 比较小的内存空间,当前线程所执行的字节码的行号指 ...
- php中$_FILES应用实例
允许用户从表单上传文件是非常有用的.先来看一段HTML表单代码 <html> <body> <form action="upload_file.php" ...
- HTML学习笔记8:表单
什么是表单? 一个网页表单可以将用户输入的数据发送到服务器进行处理.因为互联网用户使用复选框,单选按钮或文本字段填写表格,所以WebForms的形式类似文件或数据库.例如,WebForms ...