• python3没有xrange原因与解决方法


    在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。这个表现十分像生成器(比如。"惰性求值")。但是这个 xrange-iterable 是无穷的,意味着你可以无限遍历。由于它的惰性求值,如果你不得仅仅不遍历它一次,xrange() 函数 比 range() 更快(比如 for 循环)。尽管如此,对比迭代一次,不建议你重复迭代多次,因为生成器每次都从头开始。

    在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange() 会抛出命名异常)。

    解决方法

    上面讲的原因比较官方,可能很多人不是理解,通俗点讲就是:

    因为 python3 中取消了 range 函数,而把 xrange 函数重命名为 range,所以现在直接用 range 函数即可。

    因此,在python3版本中,我们只需要直接用range 函数就可以了!而且从某种意义上来说,xrange() 函数用法与 range() 完全相同。如下:

    range

    函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个列表。

    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(2,10)
    [2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(2,10,2)
    [2, 4, 6, 8]
    >>> type(_)
    <type 'list'>

    xrange

    函数说明:和range 的用法完全相同,但是返回的是一个生成器。

    >>> xrange(10)
    xrange(10)
    >>> xrange(2,10)
    xrange(2, 10)
    >>> xrange(2,10,2)
    xrange(2, 10, 2)
    >>> type(_)
    <type 'xrange'>
    >>> list(xrange(2, 10, 2))
    [2, 4, 6, 8] 
  • 相关阅读:
    [LeetCode] 75. 颜色分类(荷兰国旗)
    [LeetCode] 347. 前K个高频元素
    CMU-14445 数据库原理 汇总
    MIT-6.824 操作系统 汇总
    发布一个基于协程和事件循环的c++网络库
    记录一次gdb debug经历
    彻底弄懂UTF-8、Unicode、宽字符、locale
    CPU使用率原理及计算方式
    TCP使用注意事项总结
    STL-vector
  • 原文地址:https://www.cnblogs.com/lincappu/p/12667585.html
Copyright © 2020-2023  润新知