for文でおなじみのrange関数の使い方を説明していきます。
この関数の使い方を詳しく知っていれば柔軟にfor文のプログラムを作ることができます。
この記事で紹介しているコードはPythonのIDLE表記になっています。
range関数とは?
range関数とはPythonの組み込み関数で、引数の値を基準にして連続した数値を返します。
Pythonのドキュメントには「rangeは、実際には関数ではなくイミュータブルなシーケンス型」と記載されていますが、最初のうちは関数という認識で大丈夫です。
それに、「Pythonの組み込み関数」のページでrangeが紹介されているので「関数」という認識で差し支えありません。
range関数の使い方4つ
- ストップのみ決める
- スタートを変更する
- 逆順にする方法
- とびとびの値にする
①ストップを決める
1 |
range(stop) |
引数として一つだけ数値を渡した場合を見ていきましょう。
stop引数に渡した数値までの整数を返します。
1 2 3 |
>>> list(range(3)) [0, 1, 2] |
上の例ではlist関数を使ってrange関数の戻り値をリストにして表しています。
range関数の引数が3なので「0~2」の3個の数値を返します。
stop引数より一つ小さい数までであることに注意してください。
また、このように入力した場合のスタートは0で固定です。
数え出しを変更したい場合は②へ
以下はfor文と合わせて使った場合の例です。
1 2 3 4 5 6 7 8 |
>>> for i in range(5): print(i) 0 1 2 3 4 |
range関数の引数が5なので「0~4」までの5個の数値を返します。
引数に入力した数値の”個数”だけ数値が返されると覚えておきましょう。
start,stop,stepを設定する
1 |
range(start, stop, step) |
range関数はこのようにstart、stop、stepの3つの引数をとることができます。このように書くことで、②スタートを変えたり、③数値を逆順に出力したり、④一つ飛ばしや二つ飛ばしなどができます。
関数の引数に関しては以下の記事でまとめています。
Pythonの関数を実行するときに必要な引数についての解説です。呼び出し方によって位置引数とキーワード引数に分けられます。今回はそれらの違いを見ていきましょう。 もし関数や引数の基本について知りたいという方は以下の記事をご覧ください[…]
②スタートを変更する
①でも見たように基本は0から数えだしますが、start引数に数値を指定することで0以外の数字からスタートできます。
1 2 3 |
>>> list(range(2, 6)) [2, 3, 4, 5] |
上の例では、start引数に2、stop引数に6を指定しています。それをlist関数でリストにして出力しています。このときstep引数は省略できます。
start引数が2なのでリストも2から始まっています。①でも見たようにstop引数は6ですから一つ小さい5までの4個の数値がリストに入っています。
③逆順にする方法
step引数に「-1」を指定すると逆順にできます。
1 2 3 |
>>> list(range(8, 2, -1)) [8, 7, 6, 5, 4, 3] |
上の例では、start引数は8、stop引数は2、step引数は-1となているので、8からスタートして2の一つ手前の3までの数値を返します。
逆順にするときは「start引数>stop引数」にします。start引数の方が大きくないと逆順にできません。
④とびとびの値をとる方法
step引数に任意の整数を渡すとその値だけ飛んだ数値を返します。step引数の値によってどのように飛び飛びの値をとるかは以下の例で確認してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#昇順 >>> list(range(0, 10, 2)) [0, 2, 4, 6, 8] >>> list(range(0, 10, 3)) [0, 3, 6, 9] >>> list(range(0, 10, 4)) [0, 4, 8] >>> list(range(0, 10, 5)) [0, 5] #逆順 >>> list(range(0, -10, -2)) [0, -2, -4, -6, -8] >>> list(range(0, -10, -3)) [0, -3, -6, -9] >>> list(range(0, -10, -4)) [0, -4, -8] >>> list(range(0, -10, -5)) [0, -5] |
昇順の方はstep引数が正の数になっているのでリストの中の値は増加しています。このときstop引数に10を指定していますが、実際にリストに含まれているのは一つ手前の9までになります。
逆順の場合はstep引数が負の数になっています。また、stop引数に-10を指定していますが実際にリストに含まれているのは一つ手前の-9までになります。
もちろん、とびとびの数値をとっているので必ずstop引数の一つ手前の数値がリストに含まれているとは限りません。
まとめ
- range関数は最大で3つの引数をとります。
- 最低1つの引数で動作します。
- stop引数の数値は出力されないことに注意していください。
range関数を自由に使えるとfor文でより柔軟なプログラムを書くことができますし、この記事でも見たようにリスト関数にも使えます。
IDLEで実際にいろんな数値を当てはめて挙動を確かめてみてください。
Pythonのループ処理に使われる構文にはfor文とwhile文があります。今回はそのfor文の使い方解説をしていきます。 for文とは for文はループ処理を行う構文です。Pythonで書く場合はコロン(:)とインデントに注[…]
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]