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.2index【要素インデックス】3.2比較演算子〔 例 〕 比較演算子備考range1 == range2 要素を順に比較 (属性の比較なし) 3.3オブジェクト比較 3.2range1 != range2 要素を順に比較 (属性の比較なし) 3.3オブジェクト比較 3.2range1 is range2 オブジェクト比較range1 is not range2 オブジェクト比較【未サポート】range1 < range2range1 > range2range1 <= range2range1 >= range2 共通 シーケンス演算 ( 共通のシーケンス演算) 〔 例 〕 該当レンジの変更なし【指定値】i・j<0 3.2i・j が省略 または Nonei・j が範囲外 【特記なしの動作】末尾からのインデックス ( len(range) + i・j :末尾が -1 )先頭 または 末尾 (k の正負により範囲が広がる位置)先頭 または 末尾 (近いほう)演算備考x in range レンジ range のある要素が x と等しければ True 、等しくなければ Falsex not in range レンジ range のある要素が x と等しければ False 、等しくなければ True【未サポート】range1 + range2 レンジ range1 と レンジ range2 の結合【未サポート】range * nn * 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 が出現する回数関連 Python 標準ライブラリシーケンス型 --- list, tuple, rangerange 例 (繰り返し処理・その他) # 繰り返し処理 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 例外