Python: rangeオブジェクトとは、生成方法や使い方

rangeオブジェクトとは、 整数の並びで構成されるイテラブル (繰り返し処理が可能)なオブジェクトの1つです。
rangeオブジェクトはPythonの組み込み関数range()を使って生成し、 繰り返し処理を行うfor文や、 規則的な整数の並んだリストを取得する場合に使われます。

ここではrangeオブジェクトの生成方法やfor文での使い方について解説します。

range()の書式
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」となります。

Python