recherche

Maison  >  Questions et réponses  >  le corps du texte

python - range() 和 xrange() 该选择哪个呢?

这两个该如何选择,性能上、优缺点各自如何呢?

ringa_leeringa_lee2823 Il y a quelques jours800

répondre à tous(8)je répondrai

  • 巴扎黑

    巴扎黑2017-04-17 13:38:06

    在阅读的Q.yuhen的《Python 学习笔记》时无意中看到这到一段,我想能加答上这个问题,我直接切图转过来了:

    répondre
    0
  • PHPz

    PHPz2017-04-17 13:38:06

    楼上都是说xrange优点,我补充下缺点
    1. python3没有xrange,如果python2迁移到3、或者要同时在2/3跑程序,就要注意。
    2. xrange不支持切片,这个用起来可能不是很爽。

    个人觉得,如果数据量不大,还是用range,如果数据大并且是版本2才考虑用xrange。
    ps:两个都去了解,然后选择最合适自己需求的~~这个真的没有绝对~~

    répondre
    0
  • 黄舟

    黄舟2017-04-17 13:38:06

    range(start, end, step) 会生成一个列表 [start, start+step, start+2*step, ..., end]
    如果start与end的相差很大,那生成列表的时间会很长,而且数据量很大,占内存,生成之后,再迭代。

    xrange(start, end, step) 则不会生成一个列表,迭代一次生成一个数,不会有内存方面影响。

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-17 13:38:06

    Python 3 只有 range,跟 Python 2 的 xrange 一个效果 ~~

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 13:38:06

    普通程序选range,感觉可能会比较耗时的操作就使用xrange

    répondre
    0
  • 阿神

    阿神2017-04-17 13:38:06

    可以Google range()和xrange()的实现区别.

    如果range的数不大,使用range(); 反之xrange(). 至于数多大算大,我跟感觉走

    Python3.x中已经只有range()了,但是对于Python的版本问题以及维护问题,你懂的.

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-17 13:38:06

    补充一下 Python2的xrange不支持 slicing Python3 的 range 支持

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-17 13:38:06

    xrange最后返回的是一个生成器
    range是一个列表(python2.7)
    我个人是喜欢xrange一点

    répondre
    0
  • Annulerrépondre