`range` 類型表示不可變的數字序列,通常用於在 `for` 迴圈中迴圈指定的次數。 range 類型相比常規 list 或 tuple 的優勢在於一個 range 對象總是占用固定數量的(較小)記憶體,不論其所表示的範圍有多大(因為它只保存了 start, stop 和 step 值,並會根據需... ...
您的“關註”和“點贊”,是信任,是認可,是支持,是動力......
如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。
目錄
- 1 range 類型概述
- 2 range() 函數
- 3 range 元素檢測、元素索引查找、切片、負索引介紹
- 4 使用 == 和 != 檢測 range 對象是否相等
- 5 版本區別和版本新功能(部分)
- 【文章其它地址】
- 【參考資料】
1 range 類型概述
range
類型表示不可變的數字序列,通常用於在 for
迴圈中迴圈指定的次數。
range 類型相比常規 list 或 tuple 的優勢在於一個 range 對象總是占用固定數量的(較小)記憶體,不論其所表示的範圍有多大(因為它只保存了 start, stop 和 step 值,並會根據需要計算具體單項或子範圍的值)。
2 range() 函數
使用格式如下所示:
class range(stop)
class range(start, stop[, step])
對以上格式說明,
-
range 構造器
的參數必須為整數(可以是內置的 int 或任何實現了 index 特殊方法的對象)。 -
如果省略
step
參數,其預設值為 1。 如果省略start
參數,其預設值為 0,如果step
為零則會引發ValueError
。 -
如果
step
為正值,確定 ranger
內容的公式為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
。 -
stop 參數
:不包括stop
本身。
舉例如下所示:
>>> 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))
[]
3 range 元素檢測、元素索引查找、切片、負索引介紹
range 對象實現了 collections.abc.Sequence ABC
,提供如包含檢測、元素索引查找、切片等特性,並支持負索引 ,舉例如下所示:
>>> r = range(0, 20, 2)
>>> r
range(0, 20, 2)
>>> 11 in r
False
>>> 10 in r
True
>>> r.index(10)
5
>>> r[5]
10
>>> r[:5]
range(0, 10, 2)
>>> r[-1]
18
4 使用 ==
和 !=
檢測 range 對象
是否相等
使用 ==
和 !=
檢測 range 對象是否相等是將其作為序列來比較。
也就是說,如果兩個 range 對象表示相同的值序列就認為它們是相等的。
請註意:比較結果相等的兩個 range 對象可能會具有不同的 start, stop 和 step 屬性。舉例如下所示:
range(0) == range(2, 1, 3)
range(0, 3, 2) == range(0, 4, 2)
5 版本區別和版本新功能(部分)
-
3.2 版更改: 實現
Sequence ABC
。 支持切片和負數索引。 使用int
對象在固定時間內進行成員檢測,而不是逐一迭代所有項。 -
3.3 版更改: 定義
==
和!=
以根據 range 對象所定義的值序列來進行比較(而不是根據對象的標識)。 -
3.3 新版功能:
start
,stop
和step
屬性。