range 構造器的引數必須為整數(可以是內建的 int 或任何實現了index特殊方法的物件)。 如果省略 step 引數,其預設值為 1。 如果省略 start 引數,其預設值為 0,如果 step 為零則會引發 valueerror。
如果 step 為正值,確定 range r 內容的公式為 r[i] = start + step*i 其中 i >= 0 且 r[i] < stop。
如果 step 為負值,確定 range 內容的公式仍然為 r[i] = start + step*i,但限制條件改為 i >= 0 且 r[i] > stop.
如果 r[0] 不符合值的限制條件,則該 range 物件為空。 range 物件確實支援負索引,但是會將其解讀為從正索引所確定的序列的末尾開始索引。
元素絕對值大於 sys.maxsize 的 range 物件是被允許的,但某些特性 (例如 len()) 可能引發 overflowerror。
一些 range 物件的例子:
>>
>
>>
>
list
(range(10
))[0
,1,2
,3,4
,5,6
,7,8
,9]>>
>
list
(range(1
,11))
[1,2
,3,4
,5,6
,7,8
,9,10
]>>
>
list
(range(0
,30,5
))[0
,5,10
,15,20
,25]>>
>
list
(range(0
,10,3
))[0
,3,6
,9]>>
>
list
(range(0
,-10,
-1))
[0,-
1,-2
,-3,
-4,-
5,-6
,-7,
-8,-
9]>>
>
list
(range(0
))>>
>
list
(range(1
,0))
range 物件實現了 一般 序列的所有操作,但拼接和重複除外(這是由於 range 物件只能表示符合嚴格模式的序列,而重複和拼接通常都會違反這樣的模式)。
start
start 形參的值 (如果該形參未提供則為 0)
stop
stop 形參的值
step
step 形參的值 (如果該形參未提供則為 1)
range 型別相比常規 list 或 tuple 的優勢在於乙個 range 物件總是占用固定數量的(較小)記憶體,不論其所表示的範圍有多大(因為它只儲存了 start, stop 和 step 值,並會根據需要計算具體單項或子範圍的值)。
range 物件實現了 collections.abc.sequence abc,提供如包含檢測、元素索引查詢、切片等特性,並支援負索引 (參見 序列型別 — list, tuple, range):
>>
> r =
range(0
,20,2
)>>
> r
range(0
,20,2
)>>
>
11in r
false
>>
>
10in r
true
>>
> r.index(10)
5>>
> r[5]
10>>
> r[:5
]range(0
,10,2
)>>
> r[-1
]18
使用 == 和 != 檢測 range 物件是否相等是將其作為序列來比較。 也就是說,如果兩個 range 物件表示相同的值序列就認為它們是相等的。 (請注意比較結果相等的兩個 range 物件可能會具有不同的 start, stop 和 step 屬性,例如 range(0) == range(2, 1, 3) 而 range(0, 3, 2) == range(0, 4, 2)。)
在 3.2 版更改: 實現 sequence abc。 支援切片和負數索引。 使用 int 物件在固定時間內進行成員檢測,而不是逐一迭代所有項。
在 3.3 版更改: 定義 『==』 和 『!=』 以根據 range 物件所定義的值序列來進行比較(而不是根據物件的標識)。
3.3 新版功能: start, stop 和 step 屬性。
step為負數時,range的前兩位注意要反過來,並且第二位只到前一位
例如range(10,0,-1)
會出現10-9-8-7-…-3-2-1
不會出現0,並且大的數字在前
range 函式用法
python range 函式可建立乙個整數列表,一般用在 for 迴圈中。函式語法 range start,stop step 引數說明 start 計數從 start 開始。預設是從 0 開始。例如range 5 等價於range 0,5 stop 計數到 stop 結束,但不包括 stop。例...
Python基礎 range 函式
在做開發的時候經常會使用到range 這個函式,但對其只是模糊的理解,並不知道其真實用處。函式原型 range start,end,scan 引數含義 start 計數從start開始。預設是從0開始。例如range 5 等價於range 0,5 end 技術到end結束,但不包括end.例如 ra...
python內建函式range
因為我們要使用的數值範圍可能會經常變化,python 提供了乙個range 內建函式來生成這種列表。它正好 能滿足我們的需要,接受乙個數值範圍,生成乙個列表 for eachnum in range 3 print eachnum 對字串來說,很容易迭代每乙個字元,range 函式經常和len 函式...