Pythonにおけるrangeを用いたfor文の使い方について解説します。
Contents
for文におけるrangeの基本的な使い方
Pythonの繰り返し(ループ)処理ではfor文を使用します。Pythonにおけるfor文の基本的な使い方は「for文の基本的な使い方」にまとめていますので興味があれば参考にしてください。
C言語等のプログラミング言語に慣れている人は「for(i =0; i < 10; i++)」のように初期化値、条件、変化式を定義して、0, 1, 2, 3, 4, …のような数値シーケンスを使った繰り返し処理に慣れているかもしれません。
Pythonのfor文では、リスト、辞書、集合等のイテラブル(iterable)なオブジェクトから要素を取り出して処理するため少し使い勝手が異なります。Pythonで、0, 1, 2, 3, 4, …のような数値シーケンスを使ってfor文の処理を実行したい場合には、rangeを使用することで実現できます。
本記事では、rangeの基本的な使い方について例を用いて説明します。
rangeの基本的な使い方
rangeは、指定した引数によって数値シーケンスを生成します。rangeを使用して0からstop-1まで1ずつ数字が増えていく数値シーケンスを用いる場合には以下のように使用します。
# rangeを使ったfor文 for i in range(5): print(i)
【実行結果】 0 1 2 3 4
上記のようにrangeで引数を1つだけの値(stop)を指定すると0からstop-1まで1ずつ数字が増えていくような数値シーケンスを生成し、繰り返し(ループ)処理を実行します。
for文のinにはイテラブル(iterable)なオブジェクトを指定する必要がありますが、rangeはイテラブル(iterable)なオブジェクトを返却するため、inに指定して使用することができるわけです。
上記例では、stopに5を指定しているため0, 1, 2, 3, 4までの5つの数値シーケンスが生成されていることが分かります。stopの値は含まないので注意しましょう。
range(start, stop)で開始、終了の範囲を指定する方法
rangeの基本的な使用方法では、0から始まる数値シーケンスで繰り返し(ループ)処理を実行しましたが、任意の数字から始まり、任意の数字で終了するように指定したい場合があります。
この場合には、range(start, stop)のように開始をstart、終了をstopに指定して実行します。
# start, stopで範囲を指定する方法 for i in range(1, 6): print(i)
【実行結果】 1 2 3 4 5
上記のように、startからstop-1まで1ずつ数字が増えていくような数値シーケンスを生成し、繰り返し(ループ)処理を実行します。
上記例では、startに1、stopに6を指定しているため1, 2, 3, 4, 5までの5つの数値シーケンスが生成されていることが分かります。stopの値は含まないので注意しましょう。
range(start, stop, step)でステップ幅を含めて範囲を指定する方法
rangeでは、開始(start)、終了(stop)の他に、どれだけのステップ幅(step)でシーケンスを生成するかを指定することが可能です。
この場合には、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からstop-1までstepずつ数字が増えていくような数値シーケンスを生成し、繰り返し(ループ)処理を実行します。
上記例では、startに0、stopに11、stepに2を指定しているため0, 2, 4, 6, 8, 10のように2ずつ数字が増えていくような数値シーケンスが生成されていることが分かります。stopの値は含まないので注意しましょう。
stepにマイナス値を入れる場合
stepにはマイナス値を指定することも可能です。stepにマイナス値を指定することで、以下のように数値が減少していくような数値シーケンスでfor文を実行することができます。
# stepにマイナスの数値を入れて、値が減っていく数値シーケンスを使うことも可能 for i in range(5, 0, -1): print(i)
【実行結果】 5 4 3 2 1
rangeの公式ドキュメントはこちらを参照してください。
rangeの注意点
float型を引数に指定できない
rangeの基本的な使い方を紹介してきましたが、rangeの使い方について注意点があります。それは、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のagangeを使用する
rangeでは対応できないfloat型の数値シーケンスを用いて繰り返し(ループ)処理を実行したい場合には、 数値解析等でよく使用されるNumPyのarangeを使用することができます。
NumPyが環境にインストールされていない場合は以下コマンドでインストールしてください。
pip install numpy
NumPyは使用する場合にはimportして使用します。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
上記のようにarangeを使用することでfloat型の数値シーケンスでも扱うことができます。必要に応じてNumPyのarangeを使用するようにしましょう。
まとめ
Pythonにおけるrangeを用いたfor文の使い方について解説しました。
rangeの基本的な使い方と開始、終了、ステップを指定して実行する方法について説明しました。なお、float型は使用できないため、float型を使用したい場合には、NumPyのarangeを使用するようにしましょう。
rangeを使ったfor文は基本的でありつつも非常に重要な繰り返し(ループ)処理の方法なのでしっかり扱えるようにしてもらえるとよいかと思います。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。