Python: rangeオブジェクトとは、生成方法や使い方
rangeオブジェクトとは、
整数の並びで構成されるイテラブル
(繰り返し処理が可能)なオブジェクトの1つです。
rangeオブジェクトはPythonの組み込み関数range()を使って生成し、
繰り返し処理を行うfor文や、
規則的な整数の並んだリストを取得する場合に使われます。
ここではrangeオブジェクトの生成方法やfor文での使い方について解説します。
range(終了) range(開始, 終了) range(開始, 終了, ステップ)
終了値の指定には注意してください。 後ほども説明しますが「終了 - 1」までの整数の並びとなります。
range(終了)
組み込み関数「range(終了)」でrangeオブジェクトを作成し、 中身を知るために rangeオブジェクトをprint()で表示してみます。
r = range(5) print(r) # range(0, 5) print(type(r)) # <class 'range'>
「range(0, 5)」と表示されていて、 なんとなく範囲を示しているのはわかります。
次に、 range()オブジェクトをリストコンストラクタに渡してリストにします。
r = range(5) li = list(r) print(li) # [0, 1, 2, 3, 4]
リストにするとわかりやすくなります。
range(5)は 0から4までの整数の並びです。
つまり range(終了) は「0から終了-1」までの整数の並びとなります。
range(開始, 終了)
次は開始と終了を指定します。
r = range(1, 5) li = list(r) print(li) # [1, 2, 3, 4]
range(1, 5)は 1から4までの整数の並びです。
つまり range(開始, 終了) は「開始から終了-1」までの整数の並びとなります。
range(開始, 終了, ステップ)
次は開始、終了、ステップ(間隔)を指定します。
r = range(1, 10, 2) li = list(r) print(li) # [1, 3, 5, 7, 9]
range(1, 10, 2)は1から9までの整数で、
かつステップ数(間隔)が 2 となっています。
つまり range(開始, 終了, ステップ)は「開始から終了-1」までで、
かつ「間隔が指定ステップ数」の整数の並びです。
「ステップ」にはマイナスの数値を指定することもできます。
r = range(5, 0, -1) li = list(r) print(li) # [5, 4, 3, 2, 1]
for文でrangeオブジェクトを使う場合
for文でrangeオブジェクトを使って繰り返し処理を行う場合、 「for 変数 in」の次にrangeオブジェクトをそのまま指定します。 rangeオブジェクト自体がイテラブル(繰り返し処理が可能)なオブジェクトなので、 リストコンストラクタでリスト化する必要はありません。
for i in range(3): print(i) # 実行結果 0 1 2
range(3)は0から2までの連続した整数なので、 「i」の値は「0, 1, 2」となります。