範囲指定とループ

プログラムの中で「処理を10回繰り返したい」「1から100までの数字を順番に処理したい」というときに活躍するのが、Pythonのfor文です。for文は、特定の範囲内で決まった回数だけ繰り返し処理を行う際に非常に便利です。特に、range() 関数と組み合わせることで、自由自在に任意の範囲や間隔を指定してループを実行できます。この記事では、for文と範囲指定の基本から、実務で役立つ応用的な使い方までを詳しく解説します。
range()関数を使ったループの基本
Pythonの range() 関数を使うことで、指定した回数分のforループを簡単に実行できます。まずは最もシンプルな書き方から見ていきましょう。
# range()関数を使ったfor文の基本
for i in range(5):
print(i)
このコードを実行すると、range(5) が「0から始まる5つの連続した数値」を準備し、変数 i に 0, 1, 2, 3, 4 と順番に代入しながらループ処理が行われます。出力結果は次のようになります。
0
1
2
3
4
Pythonのカウントは原則として「0」からスタートするため、range(5) と書いた場合の終わりは 5 ではなく 4 になります。「指定した数値(終了値)そのものは含まれない」というルールは、Python全体の一貫した特徴ですので、必ず頭に叩き込んでおきましょう。
範囲の「開始値」と「終了値」を自由に指定する
range() 関数に2つの数値を渡すことで、開始する数値と終了する数値を個別に指定できます。 引数は range(開始値, 終了値) の順番で記述します。
# 開始値と終了値を指定したfor文(2からスタートして7の直前まで)
for i in range(2, 7):
print(i)
このコードを実行すると、2 からスタートし、終了値である 7 は含まれないため、2, 3, 4, 5, 6 が順番に出力されます。
「ステップ値(間隔)」を指定してスキップする
range() 関数に3つの数値を渡すと、数値をいくつずつジャンプさせて増加させるかというステップ値(増分)を設定できます。 構文は range(開始値, 終了値, ステップ値) です。
# 0からスタートして10の直前まで、2ずつ増やしながらループ
for i in range(0, 10, 2):
print(i)
この例では、0から2ずつ増加するため、0, 2, 4, 6, 8 という偶数だけを狙い撃ちして出力することができます(終了値の10は含まれません)。
逆送りでカウントダウンする(負のステップ値)
ステップ値には、マイナスの数値を指定することも可能です。これを利用すると、大きい数値から小さい数値へと逆方向にカウントダウンするループが作れます。
# 10からスタートして0の直前まで、2ずつ減らしながらループ
for i in range(10, 0, -2):
print(i)
この例では、10から2ずつ減少していくため、10, 8, 6, 4, 2 が出力されます。ここでも終了値である 0 自体は含まれないため、最後の出力は 2 になります。
range()のパラメータと出力パターンのまとめ
range() 関数の3つのパラメータ(引数)の組み合わせによる挙動の違いを表にまとめました。
| 具体的な記述コード | 生成される数値の範囲 | 引数(パラメータ)の解釈 |
|---|---|---|
range(5) |
0, 1, 2, 3, 4 |
引数が1つの場合は「終了値(stop)」とみなされ、開始値は0、ステップは1になります。 |
range(2, 7) |
2, 3, 4, 5, 6 |
引数が2つの場合は「開始値(start)」「終了値(stop)」になります。 |
range(0, 10, 2) |
0, 2, 4, 6, 8 |
引数が3つの場合は「開始値」「終了値」「ステップ値(step)」のすべてが適用されます。 |
range(10, 0, -2) |
10, 8, 6, 4, 2 |
ステップに負の数を指定することで、開始値から終了値に向かって減少します。 |
実務でよく見る len() とのコンビネーション
実務のプログラムでは、単に数値を回すだけでなく、「リスト(配列)の中に格納されている要素の数だけループさせたい」という場面が非常に多くあります。その際は、リストの要素数を取得する len() 関数と組み合わせることで、スマートに範囲指定ループを構築できます。
# リストの要素数に合わせたインデックスループ
fruits = ["apple", "banana", "orange"]
# len(fruits) は 3 なので、range(3) と同じ意味になり 0, 1, 2 が生成される
for i in range(len(fruits)):
print(f"インデックス {i} 番目の要素は {fruits[i]} です")
このように書くことで、リストの中身が何個に増減しても、自動的にピッタリの回数だけループしてくれる柔軟なコードになります。
まとめ
Pythonのfor文と range() 関数は、反復処理を制御するための最強のペアです。使いこなす鍵は、「終了値として指定した数値そのものは、カウントに含まれない(その直前で止まる)」という仕様を常に意識しておくことです。基本の1引数から、開始・終了を指定する2引数、間隔や向きを操る3引数(ステップ値)までを自在に使い分けることで、あらゆるループ処理をシンプルに記述できるようになりましょう。