`

Python之range和xrange区别

 
阅读更多

range 前面小节已经说明了,range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。

比如:

1 >>> range(5)
2 [01234]
3 >>> range(1,5)
4 [1234]
5 >>> range(0,6,2)
6 [024]

xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。

01 >>> xrange(5)
02 xrange(5)
03 >>> list(xrange(5))
04 [01234]
05 >>> xrange(1,5)
06 xrange(15)
07 >>> list(xrange(1,5))
08 [1234]
09 >>> xrange(0,6,2)
10 xrange(062)
11 >>> list(xrange(0,6,2))
12 [024]

由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

xrange 和 range 这两个基本上都是在循环的时候用。

1 for in range(0100):
2     print i
3  
4 for in xrange(0100):
5     print i

这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:

1 = range(0,100)
2 print type(a)
3 print a
4 print a[0], a[1]

输出结果:

1 <type 'list'>
2 [01234567891011121314151617181920,212223242526272829303132333435363738,394041424344454647484950515253545556,575859606162636465666768697071727374,757677787980818283848586878889909192,93949596979899]
3 0 1

而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:

1 = xrange(0,100)
2 print type(a)
3 print a
4 print a[0], a[1]

输出结果:

1 <type 'xrange'>
2 xrange(100)
3 0 1
分享到:
评论

相关推荐

    浅谈Python中range和xrange的区别

    在Python编程语言中,`range()`和`xrange()`(在Python 3中已被移除)是两个用于生成整数序列的函数,但它们在内存管理和性能方面存在显著差异。理解这些差异对于编写高效和内存友好的代码至关重要。 首先,`range...

    深入理解Python中range和xrange的区别

     python中xrange和range的区别 python中range()与xrange()用法分析 本次小编给大家带来的是深入理解range和xrange之间的区别。 两种用法介绍如下: 1.range([start], stop[, step]) 返回等差数列。构建等差数列,...

    python中xrange和range的区别

    range 函数说明:range([start...xrange 函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。xrange示例:复制代码 代码如下:&gt;&gt;&gt; xrange(5)xrange(5)&gt;&gt;&gt; list(xrange(5))[0, 1, 2, 3, 4]&gt;&gt;&gt;

    python中range()与xrange()用法分析

    本文实例讲述了python中range()与xrange()用法。分享给大家供大家参考,具体如下: 据说range比xrange开销要大,原因是range会直接生成一个list对象,而xrange每次调用返回其中的一个值(参考://...

    Python3如何使用range函数替代xrange函数

    在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典...在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange

    python2.x和python3.x的区别

    在Python 3.x中,`range`的行为类似于Python 2.x中的`xrange`,返回的是一个迭代器。 - **示例**: - Python 2.x: ```python for i in xrange(10): print(i) ``` - Python 3.x: ```python for i in range(10...

    python中xrange用法分析

    总结来说,xrange和range都用于生成整数序列,但是在Python 2中xrange在处理大数据时更为高效。Python 3中的range已经整合了xrange的特性,使得在所有情况下都可以高效地使用range来生成序列。无论是在Python 2还是...

    Python中xrange与yield的用法实例分析

    在Python中,`range` 和 `xrange` 都是用来生成整数序列的内置函数,但它们之间存在一些重要的区别。 ##### range - **功能**:`range()` 函数返回一个包含指定范围内的整数的列表。它接受三个参数:起始值、终止值...

    Python 2.7.x 和 3.x 版本的重要区别

    Python 2.7.x 和 3.x 是 Python 编程语言的两个主要版本,它们之间存在一些关键的区别,这些差异可能会对开发者的编程习惯和项目的兼容性产生影响。以下是这两个版本之间的一些主要区别: 1. **`__future__` 模块**...

    python开发中range()函数用法实例分析

    由于`range()`在Python 3.x版本中进行了优化,对于需要兼容Python 2.x的代码,可以使用`xrange()`函数,它在Python 2.x中与`range()`类似,但在Python 3.x中已不再可用。 总之,`range()`函数是Python中进行数值...

    Python six包

    3. **迭代器和生成器**:Python 2的`xrange`在Python 3中被`range`取代,`six`提供了`six.moves.xrange`来确保跨版本兼容性。 4. **函数和方法**:Python 2的`apply()`, `execfile()`, 和`reduce()`在Python 3中已...

    Python程序设计PPT

    在Python 2.x中xrange()创建迭代对象的用法是非常流行的,比如:for循环或者是...在Python 3.x中,range()的实现方式与xrange()函数相同,所以就不存在专用的xrange()(在Python 3.x中使用xrange()会触发NameError)。

    Python面试题.doc

    xrange和range在Python2和Python3中的差异也值得了解。在Python2中,xrange生成器用于高效地生成大整数序列,不会一次性生成整个列表,节省内存。而在Python3中,xrange被range函数替代,range函数的行为类似于...

    在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南

    5. range和xrange的区分取消:Python 3中,range函数的行为与Python 2中的xrange类似,可以生成一个可迭代的range对象,从而提高了内存效率。 6. 迭代器的改进:Python 3通过引入新的内置类型来改善迭代器的行为,...

Global site tag (gtag.js) - Google Analytics