【Python】rangeを用いたfor文の使い方

Pythonにおけるrangeを用いたfor文の使い方について解説します。
目次
for 文における range の基本的な使い方
Pythonの繰り返し処理にはfor文を使用します。for文の基本については「for文の基本的な使い方」を参照してください。
Pythonのfor文では、リストや辞書などのイテラブルなオブジェクトを処理します。この際に、0, 1, 2, 3, 4, …のような数値シーケンスを使ってfor文を実行したい場合にはrangeが便利です。
この記事では、rangeを用いたfor文の使い方について紹介します。
range の基本的な使い方
rangeは、指定した数値に従った数値シーケンスを生成します。数値シーケンスは0から始まりますが指定した数値は含まれません。
# rangeを使ったfor文
for i in range(5):
print(i)【実行結果】 0 1 2 3 4
上記例では、引数に5を指定しているので「0, 1, 2, 3, 4」という数値シーケンスを生成します。なお、rangeに1つ引数を指定する場合には、stop引数に値が設定されます。
rangeの生成する数値シーケンスは、イテラブルなオブジェクトとなっているため、for文に使用することができます。数値シーケンスの終了は、stopの値は含まないので注意しましょう。
range で開始、終了の範囲を指定する方法
rangeの基本的な使い方を紹介しましたが、0から始まる数値シーケンスを生成しました。
任意の数字から始まり、任意の数字で終了するように指定する場合にはrange(start, stop)のように開始をstart、終了をstopの引数に指定します。なお、数値シーケンスはstartからstop-1まで1ずつ数字が増えていくものとなります。
# start, stopで範囲を指定する方法
for i in range(1, 6):
print(i)【実行結果】 1 2 3 4 5
上記例では、startに1、stopに6を指定しているため「1, 2, 3, 4, 5」という数値シーケンスを生成します。
range でステップ幅を含めて範囲を指定する方法
これまで紹介してきた例では、数値は1ずつのステップ幅の数値シーケンスを生成しました。
数値シーケンスのステップ幅を指定したい場合は、range(start, stop, step)のように、開始をstart、終了をstop、ステップ幅をstepで指定します。
# start, stop, stepでステップサイズを決めて範囲を指定する方法
for i in range(0, 11, 2):
print(i)【実行結果】 0 2 4 6 8 10
上記例では、startに0、stopに11、stepに2を指定しているため「0, 2, 4, 6, 8, 10」というように2ずつ増加する数値シーケンスを生成します。
ステップ幅にマイナス値を入れる場合
数値のステップ幅にはマイナス値を入れて、数値が減少していくような数値シーケンスを生成することも可能です。
# stepにマイナスの数値を入れて、値が減っていく数値シーケンスを使うことも可能
for i in range(5, 0, -1):
print(i)【実行結果】 5 4 3 2 1
上記例では、startに5、stopに0、stepに-1を指定しているため「5, 4, 3, 2, 1」という1ずつ減少する数値シーケンスを生成します。
range を使用する際の注意点
float 型を引数に指定できない
rangeでは、0.5のようなfloat型を引数に指定できないので注意しましょう。例えば以下のようなコードはTypeErrorとなります。
for i in range(0.5, 5.5, 0.5):
print(i)【実行結果】 TypeError: 'float' object cannot be interpreted as an integer
float 型を使う場合はNumPyの arange を使用する
float型の数値シーケンスを使用したい場合は、NumPyのarangeを使用できます。NumPyは数値解析でよく使用されるPythonライブラリです。
NumPyを使用するには以下のようにインストールが必要です。
pip install numpy
NumPyのarangeは以下のように使用します。
import numpy as np
for i in np.arange(0.5, 5.5, 0.5):
print(i)【実行結果】 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
使用方法はrangeと同様です。上記例では、引数のステップ幅に指定した0.5ずつ増加するfloat型の数値シーケンスを生成しています。floatの数値シーケンスが必要な場合には、NumPyのarangeを使用するようにしましょう。
なお、arangeはもちろんintの数値シーケンスでも使用できます。また、浮動小数点数の計算精度によっては期待しない結果を返す可能性があることがあることには注意してください。
まとめ
Pythonにおけるrangeを用いたfor文の使い方について解説しました。
rangeは、0, 1, 2, 3, 4, …のような数値シーケンスを使用してfor文を実行することができます。また、開始(start)、終了(stop)、ステップ(step)を指定することで柔軟な数値シーケンスを生成することができます。
なお、float型の数値シーケンスを使用したい場合には、NumPyのarangeを使用するようにしてください。
for文での処理では、rangeは非常によく使う方法ですので、うまく使いこなせるようになってもらいたいと思います。
上記で紹介しているソースコードについては GitHub にて公開しています。参考にしていただければと思います。




