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] 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM