在Python中提供了range() function,可以建立出一個數字 list 。
Ex:
range(1, 10)
#>>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range(1, 10, 2)
#>>> [1, 3, 5, 7, 9]
而且range() 可以拿到for loop使用,因為return的值是一個 list,所以是可以被for loop接受的參數。
Ex:
for i in range(1, 10)
print i,
#>>> 1 2 3 4 5 6 7 8 9 10
但是Python又提供了另一個 xrange() 的function,不過它return的值並非一個list,而是類似generator的物件,而且只適用於loop (因為不是list嘛~)。
所以xrange跟range最大的差別就是:
1. range 是全部產生完後,return一個 list 回來使用。
2. xrange 是一次產生一個值,並return一個值回來,所以xrange只適用於loop。
所以在效能上,處理完一次的 loop 後,range 跟 xrange 是差不多的,但是如果 loop 裡面有break 的機會,那麼,使用 xrange 是會比較省時的。如果一定要跑完全部的 loop 的話,用range 應該是比較好的。
Ex:
for i in range(1, 10) :
print i,
#>>> 1 2 3 4 5 6 7 8 9 10
for i in xrange(1, 10):
if i == 5 :
break
print i,
#>>> 1 2 3 4


