首先得說明一下,只有在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循環遍歷所有的值