range函式詳解

2021-09-29 14:32:07 字數 2541 閱讀 2042

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 函式...