Pythonにおけるrange
を用いたfor
文の使い方について解説します。
Contents
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にて公開しています。参考にしていただければと思います。