簡單說說range和xrange的區別

首先得說明一下,只有在python2中才有xrange和range,python3中沒有xrange,並且python3中的range和python2中的range有 本質的區別。所以這兒說的range和xrange的區別是隻針對python2的。

1. 不同點

range

在py2中,range得到的是一個列表,即

x = range(0, 5)
print(type(x))  # 打印x的類型,結果是list
print(x) # 結果是[0,1,2,3,4]

xrange

xrange得到的是一個生成器對象, 即

x = xrange(0, 5)
print(type(x))  # 輸出類型,結果爲一個生成對象
print(x)  # 輸出x, 結果爲xrange(0,5)

那麼,python3中爲什麼沒有了range了呢(額,這個怎麼描述呢,是有range,但是這個range其實是py2中的xrange,而不是range),因爲使用生成器可以節約內存。比如現在有個代碼是for i in range(0, 10000),如果還是使用py2中的range的話,那你就會得到一個0到9999的一個列表,這個將會佔用你很大的空間,但是使用生成器的話,就會節省很大的資源。

2. 共同點

它們的使用都是一樣的,比如都可以用for循環遍歷所有的值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章