Python

【Python】range関数を使って数列を生成する方法を解説

この記事では、Python の range()関数 の使い方を解説します。

range関数 を使うことで開始値から終了値の範囲を持った rangeオブジェクト を生成できます。生成した rangeオブジェクト は for文 に渡すことで任意の回数だけループ処理させたりすることができます。

それでは、range関数の使い方を見ていきましょう!

range関数とは?

rangeは、関数と言われていますが実はクラスです。関数のように使われている range() はコンストラクタです。

range() を実行すると rangeオブジェクト を生成します。

r = range(0)
print(type(r))

実行結果

<class 'range'>

rangeオブジェクトは、リストなどのコンテナオブジェクトを使わず、引数に渡された整数を元に計算によって数列を生成します。 なので、数列の大きさによって使用するメモリのサイズが変わらず、常に一定のコストで使用することができます。

また、rangeイミュータブルなシーケンス型です。なので、生成した rangeオブジェクト はシーケンス型特有の演算を行うことができます。

シーケンスの使い方と特徴を解説

よく使う演算として rangeオブジェクト をリストに変換します。

r = range(3)
print(list(r))

実行結果

[0, 1, 2]

それでは、range()関数 の使い方を見ていきましょう!

range関数の使い方

range()関数 の書式は以下の通りです。

range(stop)
range(start, stop[, step])
start 開始値。指定されていない場合は0。
stop 終了値。
step 数列の加算値。指定されていない場合は1。

0からstopまでの数列 : range(stop)

stop引数のみ を指定することで 0 ~ stop までの連続した数列を生成することができます。

range(stop)
生成される数列の範囲 0 <= N < stop

サンプル

rangeオブジェクト を生成し、リストに変換して生成された数列を確認してみます。

r = range(3)
print(list(r))

実行結果

[0, 1, 2]

任意の範囲の数列: range(start, stop)

start引数 と stop引数 に整数を指定することで start ~ stop までの連続した数列を生成することができます。

range(start, stop)
生成される数列の範囲 start <= N < stop

サンプル

rangeオブジェクト を生成し、リストに変換して生成された数列を確認してみます。

r = range(1, 4)
print(list(r))

r = range(5, 10)
print(list(r))

実行結果

[1, 2, 3]
[5, 6, 7, 8, 9]

start < stop であれば負の値でも数列を生成することができます。

r = range(-4, -1)
print(list(r))

r = range(-2, 3)
print(list(r))

実行結果

[-4, -3, -2]
[-2, -1, 0, 1, 2]

値の増分: range(start, stop, step)

startstop に加えて step引数 を指定することで start ~ stop までの step幅 の数列を生成することができます。

range(start, stop, step)

サンプル

rangeオブジェクト からリストを生成し、数列を確認してみます。

r = range(0, 12, 2)
print(list(r))

r = range(0, 12, 3)
print(list(r))

実行結果

[0, 2, 4, 6, 8, 10]
[0, 3, 6, 9]

step引数 にマイナスの値を指定する場合は、start > stop になるように値を指定する必要があります。

r = range(-1, -4, -1)
print(list(r))

r = range(3, -3, -2)
print(list(r))

実行結果

[-1, -2, -3]
[3, 1, -1]

逆順の数列

逆順にするには reversed()関数 を使うことで簡単に実現できます。

r = range(3)
r = reversed(r)
print(list(r))

実行結果

[2, 1, 0]

step引数 にマイナスの値を指定し、start > stop の範囲を指定することでも逆順の数列を生成することができます。

r = range(2, -1, -1)
print(list(r))

実行結果

[2, 1, 0]

まとめ

この記事では、Python の range関数 の使い方を解説しました。

range()関数 は for文 と組み合わせてループ処理されるので覚えておくと便利です!

for文を使ってループ処理をする方法

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ