搜尋

首頁  >  問答  >  主體

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

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

ringa_leeringa_lee2823 天前802

全部回覆(8)我來回復

  • 巴扎黑

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

    在閱讀的Q.yuhen的《Python 學習筆記》時無意中看到這到一段,我想能加答上這個問題,我直接切圖轉過來了:

    回覆
    0
  • PHPz

    PHPz2017-04-17 13:38:06

    樓上都是說xrange優點,我補充下缺點
    1. python3沒有xrange,如果python2遷移到3、或要同時在2/3跑程序,就要注意。
    2. xrange不支援切片,這個用起來可能不是很爽。

    個人覺得,如果資料量不大,還是用range,如果資料大且是版本2才考慮用xrange。
    ps:兩個都去了解,然後選擇最適合自己需求的~~這個真的沒有絕對~~

    回覆
    0
  • 黄舟

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

    range(start, end, step) 會產生一個列表 [start, start+step, start+2*step, ..., end]
    如果start與end的相差很大,那麼產生列表的時間會很長,而且資料量很大,佔記憶體,生成之後,再迭代。

    xrange(start, end, step) 則不會產生一個列表,迭代一次產生一個數,不會有記憶體方面影響。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:38:06

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

    回覆
    0
  • PHP中文网

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

    普通程式選range,感覺可能會比較耗時的操作就使用xrange

    回覆
    0
  • 阿神

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

    可以Google range()和xrange()的實作區別.

    如果range的數不大,使用range(); 反之xrange(). 至於數多大算大,我跟感覺走

    Python3.x中已經只有range()了,但是對於Python的版本問題以及維護問題,你懂的.

    回覆
    0
  • 大家讲道理

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

    補充 Python2的xrange不支援 slicing Python3 的 range 支援

    回覆
    0
  • 大家讲道理

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

    xrange最後回傳的是一個生成器
    range是一個列表(python2.7)
    我個人是喜歡xrange一點

    回覆
    0
  • 取消回覆