您的「關注」和「點贊」,是信任,是承認,是支持,是動力......python
如意見相佐,可留言。
本人必將不遺餘力試圖作到準確和全面,終其一輩子進行修改補充更新。微信
range
類型表示不可變的數字序列,一般用於在 for
循環中循環指定的次數。函數
range 類型相比常規 list 或 tuple 的優點在於一個 range 對象老是佔用固定數量的(較小)內存,不論其所表示的範圍有多大(由於它只保存了 start, stop 和 step 值,並會根據須要計算具體單項或子範圍的值)。.net
使用格式以下所示:3d
class range(stop) class range(start, stop[, step])
對以上格式說明,code
range 構造器
的參數必須爲整數(能夠是內置的 int 或任何實現了 index 特殊方法的對象)。對象
若是省略 step
參數,其默認值爲 1。 若是省略 start
參數,其默認值爲 0,若是 step
爲零則會引起 ValueError
。blog
若是 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
。圖片
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)) []
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
==
和 !=
檢測 range 對象
是否相等使用 ==
和 !=
檢測 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
屬性。