今回は、Pythonでfor文とrangeでループを逆順で回す方法についてご紹介します。
rangeで逆順にループを行う概要
Pythonのfor文を使って逆順にループを回す場合、range関数に負のstepを指定します。
通常のfor文では、range(start, stop)のように正の数の範囲を順番に処理します。
しかし、数字を大きい方から小さい方へ順に処理したい場合は、range(start, stop, step)のstepに負の値(例: -1)を設定する必要があります。
たとえばrange(5, 0, -1)と指定すると、5から1までの値を逆順に取得できます。
range()のパラメータ
Pythonのrange()は、次の3つの引数をとることができます。
- start: ループの開始値
- stop: ループが終わる「境界値」(この値自体は含まれません)
- step: 1回のループごとに増減する値
逆順ループを実現するためには、stepを負の値(例: -1)に設定するのがポイントです。
また、stopは実際にループで回したい数字の1つ前(または1つ後)の値に設定する必要があります。
たとえば10から1まで表示したい場合は、range(10, 0, -1)とします。
これはstart=10、stop=0、step=-1という意味になり、ループが0まで到達した段階で終了するため、実際に出力されるのは10から1までです。
具体例:数字を逆順に出力する
ここでは、数字を逆順に出力するコード例を示します。
例1: 10から1までを逆順に出力
1 2 |
for i in range(10, 0, -1): print(i) |
このコードは、range(10, 0, -1)でiを10から1まで順番に取得します。
10
9
8
7
6
5
4
3
2
1
例2: 10から0までを逆順に出力
0を含めてすべての数字を逆順に出力したい場合は、stopを-1に設定します。
1 2 |
for i in range(10, -1, -1): print(i) |
このコードは、10から始まり0までを出力したあと、-1に達した段階でループが終了します。
10
9
8
7
6
5
4
3
2
1
0
よくあるエラーと注意点
stopの値を誤って設定してしまうことで、ループが期待どおりに実行されないケースがあります。
たとえば、range(10, 1, -1)と指定すると、10から2までしか出力されず、1が含まれません。
終了値を含めたい場合は、stopを1つ先に設定することを意識するとよいでしょう。
また、逆順にしたいのにstepを正の値にしてしまうと無限ループになることがあります。
負のループを利用する際は、start > stopかつstep < 0の関係になっているか確認してください。
まとめ
range()を活用すれば、for文で簡単に逆順ループを実現できます。
逆順にする場合は、stopとstepを正確に指定することがポイントです。
必要に応じてstartやstopの値を調整し、思い通りの結果が得られるように設定してみてください。