Pythonを学び始めた時に多くの人が疑問に感じるものの一つが、range関数で作られる数値の範囲です。特に「range(5)と書いた場合、5という数字も含まれるのか?」という点は、for文を使った繰り返し処理を理解するうえで重要になります。
この記事では、Pythonのrange関数の基本的な仕組みから、終了値が含まれるかどうか、実際の使い方や注意点まで初心者にも分かりやすく解説します。
Pythonのrange(5)で生成される数値に5は含まれない
Pythonのrange(5)で作られる数値の並びには、5は含まれません。生成されるシーケンスは「0、1、2、3、4」となります。
range関数では、指定した数値は「終了値」として扱われ、その値の直前までが対象になります。つまりrange(5)の場合、開始値は0、終了値は5の直前である4までになります。
実際に確認すると以下のようになります。
for i in range(5):
print(i)
このコードを実行すると、表示結果は以下のようになります。
0
1
2
3
4
最後に表示される数字は4であり、5は表示されません。
range関数は「開始値を含み終了値を含まない」仕組み
Pythonのrange関数は、基本的に「開始値は含むが終了値は含まない」というルールになっています。この考え方はプログラミングでは半開区間と呼ばれることがあります。
例えばrange(2,6)と指定した場合、2から始まり6の手前までなので、以下の数値になります。
2, 3, 4, 5
6は含まれません。この仕組みを覚えておくと、リスト操作や繰り返し処理で範囲を間違えにくくなります。
range関数の3つの使い方を理解する
range関数には、指定する値の数によって3種類の使い方があります。
| 書き方 | 意味 |
|---|---|
| range(終了値) | 0から終了値の1つ前まで |
| range(開始値,終了値) | 開始値から終了値の1つ前まで |
| range(開始値,終了値,増加量) | 指定した間隔で数値を生成 |
例えばrange(1,10,2)の場合は、1から始まり2ずつ増加するため、「1、3、5、7、9」という数値列になります。
このように終了値は常に含まれないため、最後の数字を含めたい場合は終了値に1を足して指定する必要があります。
なぜPythonのrangeは終了値を含まないのか
終了値を含まない設計には、プログラムを書く上で便利な理由があります。特に配列やリストのインデックス処理との相性が良いことが大きな理由です。
例えば5個の要素を持つリストがある場合、インデックス番号は0から4になります。range(5)を使えば、そのまま全ての要素を順番に処理できます。
例として以下のようなコードがあります。
items = ["りんご", "みかん", "ぶどう", "桃", "梨"]
for i in range(len(items)):
print(items[i])
この場合、range(5)によって0から4までの番号が生成されるため、リストの全要素を正しく処理できます。
range関数でよくある間違いと覚え方
初心者がよく間違えるのは、range(5)を見て「0から5までの6個の数字が出る」と考えてしまうことです。
しかしPythonでは「終了地点は含まれない」と覚えておけば問題ありません。「ゴール地点の手前まで進む」と考えると理解しやすくなります。
例えばrange(10)なら「0から9までの10個」、range(100)なら「0から99までの100個」と考えると、処理回数を数える時にも便利です。
まとめ
Pythonのrange(5)で生成される数値シーケンスには、5は含まれません。生成される値は0、1、2、3、4の5個です。
range関数は「開始値は含む、終了値は含まない」というルールで動作します。この仕組みを理解すると、for文やリスト処理などPythonの基本的な繰り返し処理を正確に書けるようになります。
Pythonではrange関数を頻繁に使用するため、終了値が含まれないという特徴を早めに覚えておくことが、効率的なプログラミングにつながります。

コメント