Python : range関数(forループでよく用いられる関数)の挙動について

はじめに

Pythonのループ処理についていろいろ調べてる中でいろいろ気になったことがあったので、簡単にまとめることにしました。内容は結構多岐に渡ると思うので、個別にいくつかの記事として書いていく予定。そして今回はrange関数について書いていきます。

forループにおけるrange関数について

Pythonのforループ、簡単なコードとしては以下のようになります。
for i in range(0, 10):
  print(i)

この処理ではiが0〜9までの10回ループ処理されます。
ここでrange関数は
range(開始, 終了)
という形で指定します。ここではiは1ずつ加算されていきますが、
range(開始, 終了, 増分)
と書くと増分を指定することもできます。
例えば range(0, 10, 3) とすれば、iは "0, 3, 6, 9" と増加していくループ処理がなされます。

forループの基本的使い方
forループの基本的使い方

ではrange関数は一体何をしているのか?

range関数単独で用いても書いたまま出力されるだけ

forループとrange関数は主に一緒に用いるものですが、range関数だけでも用いることが出来ます。ただPythonのインタープリタで試してみても、range関数を単独で用いても書いた内容がそのまま出力されるだけです。何か変数にrange関数を代入しても、printで出力してもやはり書いた内容がそのまま出力されます。

range関数単独での使用
range関数単独での使用

range関数をリストとして出力する

調べてみるとrange関数はシーケンスを出力するとのことで、リストに似たような形式を出力すると思われます。ということで、シーケンスをリストに変換するlist関数でこのrange関数を処理してみます。
list(range(0, 5))
とすると
[0, 1, 2, 3, 4]
と出力されます。

range関数をlist関数で処理
range関数をlist関数で処理

というわけで、これでrange関数が何をしているのかが見えてきました。
内部の処理はよく分かりませんが、range関数の出力はどうやら何かしらのシーケンスとなっている模様。
そしてこのようにlist関数と合わせると、range関数のシーケンスがどうなっているのかが把握出来るということが分かりました。またリストを作る時、何かしら連番を作りたいならrange関数を用いるといった使い方も出来るでしょう。

それならforループには他のシーケンス(文字列、リストなど)も指定出来るのでは?

range関数がシーケンスを返すのであれば、forループのrange関数の部分を他のシーケンス(文字列、リストなど)も指定出来るのではないでしょうか?

forループに文字列を指定したらどうなるか?
forループに文字列を指定したらどうなるか?

これは簡単に確かめられるのですが、今回の記事はrange関数についてなのでまた次回にまとめることにします。


コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)