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ループの基本的使い方 |
ではrange関数は一体何をしているのか?
range関数単独で用いても書いたまま出力されるだけ
forループとrange関数は主に一緒に用いるものですが、range関数だけでも用いることが出来ます。ただPythonのインタープリタで試してみても、range関数を単独で用いても書いた内容がそのまま出力されるだけです。何か変数にrange関数を代入しても、printで出力してもやはり書いた内容がそのまま出力されます。range関数単独での使用 |
range関数をリストとして出力する
調べてみるとrange関数はシーケンスを出力するとのことで、リストに似たような形式を出力すると思われます。ということで、シーケンスをリストに変換するlist関数でこのrange関数を処理してみます。list(range(0, 5))
とすると
[0, 1, 2, 3, 4]
と出力されます。
range関数をlist関数で処理 |
というわけで、これでrange関数が何をしているのかが見えてきました。
内部の処理はよく分かりませんが、range関数の出力はどうやら何かしらのシーケンスとなっている模様。
そしてこのようにlist関数と合わせると、range関数のシーケンスがどうなっているのかが把握出来るということが分かりました。またリストを作る時、何かしら連番を作りたいならrange関数を用いるといった使い方も出来るでしょう。
それならforループには他のシーケンス(文字列、リストなど)も指定出来るのでは?
range関数がシーケンスを返すのであれば、forループのrange関数の部分を他のシーケンス(文字列、リストなど)も指定出来るのではないでしょうか?forループに文字列を指定したらどうなるか? |
これは簡単に確かめられるのですが、今回の記事はrange関数についてなのでまた次回にまとめることにします。
コメント
コメントを投稿