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

xrange和range的区别

阅读更多

内置函数range()返回一个list;

xrange()返回一个xrange对象,xrange对象是一个generator,而且是一个sequence

 

>>> type(range(10))
<type 'list'>
>>> type(xrange(10))
<type 'xrange'>
>>> dir(xrange)
['__class__', '__delattr__', '__doc__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__len__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__str__']
 

 

因此,当需要生成大范围数据时(如百万级),range会一次性的生成所有的数据,并以list形式返回,这样就会占用大量的内存;而xrange是一个generator,每次按需生成一个值,只占用少量的内存空间。

通常,range和xrange经常用在for循环中,当for不需要遍历所有的元素(如含有break语句),尤其只遍历起始的少量元素时,此时xrang就有性能优势,因为它不用像range那样一次性地生成所有的元素,造成浪费。

 

superwind@ubuntu:~$ python -m timeit 'for i in range(1000000):pass'
10 loops, best of 3: 52.6 msec per loop
superwind@ubuntu:~$ python -m timeit 'for i in xrange(1000000):pass'
10 loops, best of 3: 28.8 msec per loop
 
分享到:
评论

相关推荐

    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的区别

    总结来说,`range()`和`xrange()`的主要区别在于: 1. `range()`返回一个列表,而`xrange()`返回一个生成器。 2. `range()`需要一次性分配内存存储所有元素,`xrange()`按需生成。 3. 在Python 3中,`range()`兼具了...

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

    软件开发网已经给大家介绍过range和xrange的区别的基础知识,有兴趣的朋友可以参阅:  python中xrange和range的区别 python中range()与xrange()用法分析 本次小编给大家带来的是深入理解range和xrange之间的区别。 ...

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

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

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

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

    python中xrange用法分析

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

    xrange:xrange内置的纯Python实现

    xrange.py Python 2.7内置xrange的纯Python实现,并且从该版本的Python ... 没有充分的理由在代码中使用它,它的目的是记录和描述xrange或range内建xrange的行为,以及通常实现Sequence协议的对象的行为。 在了解更多

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

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

    xRange:有用的DOM &lt;=> xpath &lt;=> Range函数套件

    3. **Range操作**:xRange扩展了浏览器原生的Range对象,提供了更多的方法来创建、修改和操作文档中的选区。例如,你可以轻松地创建一个跨越多个节点的选区,或者获取选区内的文本内容和HTML。 4. **文本和内容处理...

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

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

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

    在Python编程语言中,`range`和`numpy.arange`都是用来生成序列的工具,但它们在功能、使用场景以及返回类型上存在显著差异。这里我们将深入探讨这两个函数的异同,以及它们各自的特点。 首先,让我们看看它们的...

    python面试题3-1

    6. xrange和range的区别:在Python 2中xrange与range类似,但xrange生成的是一个生成器而不是列表,这有助于节省内存。Python 3中没有xrange,只有range。 7. PEP8风格指南:PEP8是一份针对Python代码格式的风格...

    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...

Global site tag (gtag.js) - Google Analytics