python3沒有xrange原因與解決方法

2022-09-16 04:27:13 字數 1116 閱讀 7853

在 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([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(_)

'list'>

函式說明:和range 的用法完全相同,但是返回的是乙個生成器。

>>> xrange(10)

xrange(10)

>>> xrange(2,10)

xrange(2, 10)

>>> xrange(2,10,2)

xrange(2, 10, 2)

>>> type(_)

'xrange'>

>>> list(xrange(2, 10, 2))

[2, 4, 6, 8]

python3 切片 python3 切片

取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取前n個元素就沒轍了。取前n...

python3安裝 Python3的安裝

1.anaconda安裝 2.安裝包安裝 3.linux下的命令列安裝 centos red hat 1 sudo yum install y sudo yum update3 sudo yum install y python35u python35u libs python35u devel p...

python3異常例項 Python3 錯誤和異常

錯誤和異常 程式執行時有兩種可以分辨的錯誤 syntax error 和 exception 按中文來說,就是語法錯誤和異常。語法錯誤 語法錯誤也就是解析錯誤,是我們最優可能遇到的錯誤。while true print hello world file line 1,in?while true pr...