Python – range()をforループに使う
2009年8月2日 7:59 PM by Abalone




前回は、シーケンス型を使ったforループについて書いたが、C言語のループのようにループ変数を使って、整数を使ってループさせたい場合ももちろん出てくる。
range()関数を使えば、そういうループを記述することが可能。


for i in range(5):
    print i,


出力は以下のようになる。

0 1 2 3 4


range(n) は、0から引数で渡された個数の整数シーケンスを生成するので、range(5)とすると、0から4までの整数シーケンスになる。これをforループのシーケンス変数として渡すと上のような結果になる。

range()関数は、Pythonの組み込み関数の一つ。以下のページにあるPythonのライブラリリファレンスに説明がある。Pyton ライブラリリファレンス 2.1 組み込み関数
この文書によれば、range()関数は引数を3つ取ることができる。

range([start,]stop[,step])

説明によると、start から始まり、stopよりも小さい値までの整数リストを返すと書かれている。step引数は、その変化値なので、これをforループのシーケンス引数に使用することで色々なループに利用することができそう。ライブラリリファレンスに色々書かれているが、実際にrange()関数を色々使ってみる。


print range(5)
print range(2,5)
print range(2,5,1)
print range(2,5,2)
print range(2,-5,-1)

出力結果は以下のようになる。


[0, 1, 2, 3, 4]
[2, 3, 4]
[2, 3, 4]
[2, 4]
[2, 1, 0, -1, -2, -3, -4]

stepに負数を渡すことも可能。この場合、返値のリスト中の要素は減っていく。かなり柔軟にループを記述できそうだ。stepに負数を渡す場合には、stopに渡す数値をstartより小さい値にしておく必要があるので注意。stopがstartより大きい場合、例えばprint range(2,5,-1)とかしておくと、空のリストが返却されるので、意図しない動作となってしまう可能性がある。それを逆手に取ったロジックを書くことも可能だろうとは思うが、そうではない大抵の場合、誤動作の原因となってしまうだろう。





トラックバックURL


この記事に対するコメント/トラックバックはまだありません


コメントをどうぞ

お名前(必須)
Eメールアドレス(公開されません)(必須)