1.range()
返回的是range object
,而np.arange()
返回的是numpy.ndarray()
range
儘可用於迭代,而np.arange
做用遠不止於此,它是一個序列,可被當作向量使用。性能
2.range()
不支持步長爲小數,np.arange()
支持步長爲小數spa
3.二者均可用於迭代code
4.二者都有三個參數,以第一個參數爲起點,第三個參數爲步長,截止到第二個參數以前的不包括第二個參數的數據序列
某種意義上,和STL中由迭代器組成的區間是同樣的,即左閉右開的區間。[first, last)
或者不加嚴謹地寫做[first:step:last)
對象
>>>range(1,5) range(1,5) >>>tuple(range(1, 5)) (1, 2, 3, 4) >>>list(range(1, 5)) [1, 2, 3, 4] >>>r = range(1, 5) >>>type(r) <class 'range'> >>>for i in range(1, 5): ... print(i) 1 2 3 4 >>> np.arange(1, 5) array([1, 2, 3, 4]) >>>range(1, 5, .1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'float' object cannot be interpreted as an integer >>>np.arange(1, 5, .5) array([ 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5]) >>>range(1, 5, 2) >>>for i in range(1, 5, 2): ... print(i) 1 3 >>for i in np.arange(1, 5): ... print(i) 1 2 3 4
xrange()也是用做循環,只是xrang(0,10)不返回list,返回xrange對象。每次調用返回其中的一個值。
返回很大的數的時候或者頻繁的須要break時候,xrange性能更好。arange和xrange沒有區別,並且在數值大的時候xrang更優越,之後coding時候儘可能用xrange。blog