Python

【Python】range関数の使い方【数列】

この記事では、Pythonのrange関数の使い方について解説します。

range関数を使うことで任意の範囲の連続した数列を生成することができます。また、for文と組み合わせて使用され、任意の回数ループさせたり、連番を使った処理をさせることができます。

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

rangeとは?

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

range関数と言いましたが、rangeは型です。しかし、関数のように使われるので公式チュートリアルにも「range() 関数」と明記されています。

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

【Python】シーケンス型とは?【シーケンス型の使い方】この記事では、Pythonのシーケンス(sequence)型について解説します。シーケンス型とは文字列やリストのような複数の要素をまとめ...

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

range関数の書式

range関数は以下のように記述します。

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

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

range()関数に整数を1つだけ渡すことで、0からstopまでの連続した数列を生成することができます。

range(stop: int)

生成される数列の範囲: 0 <= N < stop

サンプル

以下のコードでは、range関数で生成した数列をfor文で出力しています。

for i in range(3):
    print(i)

実行結果

0
1
2

マイナスの値を指定する

stopにマイナスの値も指定することができますが、0 < stopではないので数列は生成されません。

r = range(-3)

print(list(r))

実行結果

[]

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

range関数に整数を2つ渡すことで、startからstopまでの連続した数列を生成することができます。

range(start: int, stop: int)

生成される数列の範囲: start <= N < stop

サンプル

r = range(1, 4)

print(list(r))

実行結果

[1, 2, 3]

マイナスの値を指定する

start < stopであれば、マイナスの範囲の数列も生成することができます。

r = range(-4, -1)

for i in r:
    print(i)

実行結果

-4
-3
-2

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

range()関数に整数を3つ渡すことで、startからstopまでのstep幅の数列を生成することができます。

range(start: int, stop: int, step: int)

サンプル

r = range(0, 12, 2)

for i in r:
    print(i)

実行結果

0
2
4
6
8
10

マイナスの値を指定する

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

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

for i in r:
print(i)

実行結果

-1
-2
-3

逆順の数列

step引数にマイナスの値を指定して逆順の数列を生成するとわかりにくく、ミスが多くなったりします。なので、reversed関数を使って数列を逆順にしましょう!

r = range(0, 12, 2)

for i in reversed(r):
    print(i)

実行結果

10
8
6
4
2
0

float型の数列を生成する

range関数では整数型の数列しか生成することしかできません。float型の数列を生成するには「内包表記」または「NumPy」を使います。

内包表現を使う

内包表現を使うことでfloat型の数列を生成することができます。

r = [i / 100 for i in range(90, 100, 2)]
print(r)

実行結果

[0.9, 0.92, 0.94, 0.96, 0.98]

関連【Python】内包表記の使い方

NumPyを使う

NumPyarange関数を使うことで、float型の数列を生成することができます。

import numpy as np

np.arange(start, stop, step, dtype)

サンプル

import numpy as np

for i in np.arange(0.0, 1.0, 0.2):
    print(i)

実行結果

0.0
0.2
0.4
0.6
0.8

参考numpy.arange — NumPy v1.19 Manual

まとめ

この記事では、Pythonのrange関数の使い方を解説しました。range関数は、よくfor文と組み合わせて使われるので覚えておくと便利です!

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

参考range — Python 3.9.1 ドキュメント

【おすすめ】Python参考書