`
heipark
  • 浏览: 2097071 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python中range()与xrange区别

 
阅读更多

 1. range()返回一个list,xrange()返回一个迭代对象

 

print range(10)
print xrange(10)

print type(range(10))
print type(xrange(10))

输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
xrange(10)
<type 'list'>
<type 'xrange'>

 

 2. 通过sys.getsizeof(()方法可以看到range返回list,它所占内存为所有元素累加;xrange则只返回一个32byte的对象,无论它要返回多少数值。

import sys

print sys.getsizeof(range(10000))
print sys.getsizeof(xrange(10000))
print sys.getsizeof(xrange(100))

输出:
80064
32
32

 

3. 性能比较

 

import time

start = time.time()

for i in  range(100000000):
    pass

print "range use %ss" % (int(time.time() - start))

start = time.time()
for i in xrange(100000000):
    pass

print "xrange use %ss" % (int(time.time() - start))

输出:
range use 6s
xrange use 4s

 

 

4. 总结

正常情况下,使用range和xrange都行,如果你range值很大,则无论存储空间还是迭代性能xrange都优于range。

分享到:
评论

相关推荐

    浅谈Python中range和xrange的区别

    而`xrange()`(在Python 3中被`range()`替代)在Python 2中是另一个生成器函数,它的行为与`range()`类似,但不直接返回一个完整的列表。相反,它返回一个生成器对象,可以在迭代时按需生成每个数值。这意味着它不...

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

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

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

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

    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;

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

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

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

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

    python中xrange用法分析

    在Python中,xrange是一个内建函数,用于生成一个整数序列,类似于range函数。不过,xrange函数在处理大数据集时更加内存高效,因为它不会立即生成整个序列,而是在每次迭代中生成序列中的下一个值。在Python 3中,...

    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开发中range()函数用法实例分析

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

    浅谈Python中range与Numpy中arange的比较

    然而,在Python 3.x中,`xrange`已被`range`函数替代,后者的行为与Python 2.x中的`xrange`类似,即生成一个迭代器而非完整的列表。 总结来说,`range`更适合简单的整数序列和内存有限的情况,而`arange`则适用于...

    Python程序设计PPT

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

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

    Python 2 中的 `xrange` 生成器函数在 Python 3 中被 `range` 函数替代,但 `range` 在 Python 3 中表现得像 `xrange` 一样,即它不会立即创建一个列表,而是返回一个可迭代对象。 6. **异常处理**: Python 2 ...

    Python面试题.doc

    而在Python3中,xrange被range函数替代,range函数的行为类似于Python2的xrange,它同样采用生成器机制,能处理大数据集,并提高了效率。 在文件操作中,xreadlines和readlines都用于读取文件的行,但它们返回的...

Global site tag (gtag.js) - Google Analytics