range()是Python的內置函數,用於創建整數的列表,可以生成遞增或者遞減的數列。
xrange也有相同的功能, 今天來看下它們之間的不同。
range 函數說明:range([start,] stop[, step]),根據start與stop指定的範圍以及step設定的步長。
xrange 函數說明:用法與range完全相同。
range示例:
print range(6)
print type(range(6))
print range(1, 6)
print range(0, 6, 2)
#輸出結果
[0, 1, 2, 3, 4, 5]
<type 'list'>
[1, 2, 3, 4, 5]
[0, 2, 4]
xrange示例:
print xrange(6)
print type(xrange(6))
print list(xrange(6))
print xrange(1, 6)
print list(xrange(1, 6))
print list(xrange(0, 6, 2))
#輸出結果
xrange(6)
<type 'xrange'>
[0, 1, 2, 3, 4, 5]
xrange(1, 6)
[1, 2, 3, 4, 5]
[0, 2, 4]
由上面的示例可以知道:range生成的是一個列表,而xrange生成的是一個<type 'xrange'>類型,可以使用list(xrange(6))將其轉換爲列表。因此要生成很大的數字序列的時候,用xrange會比range性能優很多,因爲不需要預先開闢一塊很大的內存空間,這兩個基本上都是在循環的時候用。
對於以下同樣遍歷100次,這兩個輸出的結果雖然都是一樣的,但實際上有很多不同。
for i in range(0, 100):
print i
for i in xrange(0, 100):
print i
range會直接生成一個list對象:
而xrange則不會直接生成一個list,而是每次調用返回其中的一個值:
特別提醒:xrange函數在Python3中已經取消,在python3中,range()這種實現被移除了,保留了xrange()的實現,且將xrange()重新命名成range()。所以Python3不能使用xrange,只能使用range。
在python3中執行以下代碼:
a = range(6)
print(type(a))
print(list(a))
#輸出結果
<class 'range'>
[0, 1, 2, 3, 4, 5]