range【レンジ型】3.2 / 3.3
メモ コンストラクタ 属性 一覧 メソッド 一覧 比較演算子 共通 シーケンス演算
メモ
- レンジ型
- イミュータブル(変更不可) なシーケンス
- 少量のメモリ使用 (最低限の値のみを保持)
- 通常、for-in【for ループ】の固定数の繰り返しで使用 〔 例 〕
- sys.maxsize より大きい絶対値の要素可能 3.2 〔 例 〕
但し、一部機能が OverflowError 例外 (例:要素数が sys.maxsize を超えた場合のlen【要素数】)
- 属性 一覧〔 例 〕
属性 (取得のみ) 備考 start 3.3 開始整数値 step 3.3 ステップ整数値 stop 3.3 終了整数値 - メソッド 一覧
メソッド コンストラクタ count【要素出現回数】3.2 index【要素インデックス】3.2 - 比較演算子〔 例 〕
比較演算子 備考 range1 == range2 要素を順に比較 (属性の比較なし) 3.3
オブジェクト比較 3.2range1 != range2 要素を順に比較 (属性の比較なし) 3.3
オブジェクト比較 3.2range1 is range2 オブジェクト比較 range1 is not range2 オブジェクト比較 【未サポート】
range1 < range2
range1 > range2
range1 <= range2
range1 >= range2 - 共通 シーケンス演算 ( 共通のシーケンス演算) 〔 例 〕
該当レンジの変更なし 【指定値】
i・j<0 3.2
i・j が省略 または None
i・j が範囲外【特記なしの動作】
末尾からのインデックス ( len(range) + i・j :末尾が -1 )
先頭 または 末尾 (k の正負により範囲が広がる位置)
先頭 または 末尾 (近いほう)演算 備考 x in range レンジ range のある要素が x と等しければ True 、等しくなければ False x not in range レンジ range のある要素が x と等しければ False 、等しくなければ True 【未サポート】
range1 + range2レンジ range1 と レンジ range2 の結合 【未サポート】
range * n
n * rangeレンジ range を n(整数) 回結合 (n<0:空のレンジ)
注:参照のコピーrange[i ] レンジ range の i 番目の要素
範囲外:IndexError 例外range[[i] :[j]] 3.2 レンジ range の i~j(含まない) 番目までの要素 range[[i] :[j] :[k]] 3.2 レンジ range の i~j(含まない) 番目までの k(省略:1) 番目 毎の要素
0<k:先頭から末尾方向
k<0:末尾から先頭方向・i は末尾側を指定 (範囲補正なし)
k=0:不可 (ValueError 例外)len(range) レンジ range の要素数 max(range) レンジ range の最大要素 min(range) レンジ range の最小要素 【未サポート】
range.index(x [, i [, j ]])レンジ range 中で 要素 x が i~j(含まない) の間で 最初に出現する位置インデックス
未検出:ValueError 例外range.index(x) 3.2 レンジ range 中で 要素 x が最初に出現する位置インデックス
未検出:ValueError 例外range.count(x) 3.2 レンジ range 中に 要素 x が出現する回数 - 関連
例 (繰り返し処理・その他)
# 繰り返し処理
for i in range(3):
print(i)
# 出力:0
# 出力:1
# 出力:2
for x in range(3):
for y in range(2):
print("x={} y={}".format(x, y))
# 出力:x=0 y=0
# 出力:x=0 y=1
# 出力:x=1 y=0
# 出力:x=1 y=1
# 出力:x=2 y=0
# 出力:x=2 y=1
# その他
import sys
rng = range(sys.maxsize + 1, sys.maxsize + 2)
print(len(rng)) # 出力:1
rng = range(sys.maxsize + 1)
#print(len(rng)) # OverflowError 例外
例 (属性)
rng = range(5)
print(rng) # 出力:range(0, 5)
print(rng.start) # 出力:0
print(rng.stop) # 出力:5
print(rng.step) # 出力:1
rng = range(2, 5)
print(rng) # 出力:range(2, 5)
print(rng.start) # 出力:2
print(rng.stop) # 出力:5
print(rng.step) # 出力:1
rng = range(1, 3, 2)
print(rng) # 出力:range(1, 3, 2)
print(rng.start) # 出力:1
print(rng.stop) # 出力:3
print(rng.step) # 出力:2
例 (比較演算子)
rng1 = range(5)
rng2 = range(5)
rng3 = range(3)
print(rng1 == rng2) # 出力:True
print(rng1 == rng3) # 出力:False
print(rng1 != rng2) # 出力:False
print(rng1 != rng3) # 出力:True
rng4 = range(1, 5, 3)
print(rng4) # 出力:range(1, 5, 3)
print(list(rng4)) # 出力:[1, 4]
rng5 = range(1, 7, 3)
print(rng5) # 出力:range(1, 7, 3)
print(list(rng5)) # 出力:[1, 4]
print(rng4 == rng5) # 出力:True
rng6 = range(4, 0, -3)
print(rng6) # 出力:range(4, 0, -3)
print(list(rng6)) # 出力:[4, 1]
print(rng4 == rng6) # 出力:False
rng1 = range(5)
rng2 = range(5)
rng3 = rng1
print(rng1 is rng2) # 出力:False
print(rng1 is rng3) # 出力:True
print(rng1 is not rng2) # 出力:True
print(rng1 is not rng3) # 出力:False
例 (共通 シーケンス演算)
rng = range(5)
# x in range
print(1 in rng) # 出力:True
print(5 in rng) # 出力:False
# x not in range
print(1 not in rng) # 出力:False
print(5 not in rng) # 出力:True
# range[i]
rng = range(7)
print(rng[3]) # 出力:3
print(rng[-2]) # 出力:5
#print(rng[99]) # IndexError 例外
#print(rng[-99]) # IndexError 例外
# range[i:j]
rng = range(7)
print(list(rng[2:4])) # 出力:[2, 3]
print(list(rng[2:-3])) # 出力:[2, 3]
print(list(rng[-5:-3])) # 出力:[2, 3]
print(list(rng[:4])) # 出力:[0, 1, 2, 3]
print(list(rng[2:])) # 出力:[2, 3, 4, 5, 6]
print(list(rng[:])) # 出力:[0, 1, 2, 3, 4, 5, 6]
print(list(rng[-99:4])) # 出力:[0, 1, 2, 3]
print(list(rng[2:99])) # 出力:[2, 3, 4, 5, 6]
print(list(rng[-99:99])) # 出力:[0, 1, 2, 3, 4, 5, 6]
# range(i:j:k)
rng = range(7)
print(list(rng[1:6:2])) # 出力:[1, 3, 5]
print(list(rng[1:-1:2])) # 出力:[1, 3, 5]
print(list(rng[-6:-1:2])) # 出力:[1, 3, 5]
print(list(rng[-99:99:2])) # 出力:[0, 2, 4, 6]
print(list(rng[5:1:-2])) # 出力:[5, 3]
print(list(rng[-2:1:-2])) # 出力:[5, 3]
print(list(rng[-2:-6:-2])) # 出力:[5, 3]
print(list(rng[1:5:-2])) # 出力:[]
#print(list(rng[5:1:0])) # ValueError 例外
print(list(rng[:6:2])) # 出力:[0, 2, 4]
print(list(rng[1::2])) # 出力:[1, 3, 5]
print(list(rng[1:6:])) # 出力:[1, 2, 3, 4, 5]
print(list(rng[::2])) # 出力:[0, 2, 4, 6]
print(list(rng[1::])) # 出力:[1, 2, 3, 4, 5, 6]
print(list(rng[::])) # 出力:[0, 1, 2, 3, 4, 5, 6]
# len(range)
rng = range(5)
print(list(rng)) # 出力:[0, 1, 2, 3, 4]
print(len(rng)) # 出力:5
rng = range(1, 5)
print(list(rng)) # 出力:[1, 2, 3, 4]
print(len(rng)) # 出力:4
rng = range(1, 6, 2)
print(list(rng)) # 出力:[1, 3, 5]
print(len(rng)) # 出力:3
rng = range(-3, 6, 2)
# min(range)
print(min(rng)) # 出力:-3
# max(range)
print(max(rng)) # 出力:5
# range.index(x)
rng = range(5)
print(list(rng))
# 出力:[0, 1, 2, 3, 4]
print(rng.index(1)) # 出力:1
print(rng.index(4)) # 出力:4
#print(rng.index(5)) # ValueError 例外
# range.count(x)
rng = range(5)
print(rng.count(0)) # 出力:1
print(rng.count(4)) # 出力:1
print(rng.count(5)) # 出力:0
コンストラクタ
構文
class range(stop)
class range(start, stop[,step])
start開始整数値 (上側の構文では 0)
stop終了整数値 (含まない)
stepステップ整数値 (省略:1)
【要素】
range[i]start+step*i (0 ≦ i)
stepが 正数range[i] < stop
stepが 負数stop < range[i]
stepが 0ValueError 例外
例
rng = range(5)
print(list(rng)) # 出力:[0, 1, 2, 3, 4]
rng = range(0, 5)
print(list(rng)) # 出力:[0, 1, 2, 3, 4]
rng = range(1, 5)
print(list(rng)) # 出力:[1, 2, 3, 4]
rng = range(0, 5, 1)
print(list(rng)) # 出力:[0, 1, 2, 3, 4]
rng = range(0, 5, 2)
print(list(rng)) # 出力:[0, 2, 4]
rng = range(1, 5, 2)
print(list(rng)) # 出力:[1, 3]
rng = range(5, 0, -1)
print(list(rng)) # 出力:[5, 4, 3, 2, 1]
rng = range(5, 0, -2)
print(list(rng)) # 出力:[5, 3, 1]
rng = range(5, 1, -2)
print(list(rng)) # 出力:[5, 3]
#rng = range(1, 5, 0) # ValueError 例外