【Python入門】range関数の使い方を徹底解説!初心者でもわかる基礎から応用まで
目次
はじめに
Pythonを学び始めると、必ずと言っていいほど出会うのが「range関数」です。ループ処理を書く際に欠かせないこの関数は、プログラミング初心者にとって最初は少し戸惑うかもしれません。しかし、一度理解してしまえば非常にシンプルで使いやすい機能です。
この記事では、Python初心者の方を対象に、range関数の基礎から実践的な使い方まで、わかりやすく丁寧に解説していきます。プログラミングが初めての方でも理解できるよう、専門用語はできるだけ避け、具体的な例を交えながら説明していきます。
range関数とは何か?
range関数は、連続した整数の並びを生成するPythonの組み込み関数です。「ある範囲の数字を順番に取り出したい」というときに使用します。
例えば、「0から9までの数字が必要」「1から100までカウントしたい」といった場合に、range関数を使えば簡単に実現できます。特にfor文と組み合わせて使用することが多く、「指定した回数だけ処理を繰り返す」といった場面で活躍します。
range関数が生成するのは、厳密には「rangeオブジェクト」と呼ばれる特殊なデータ型ですが、実質的には「数字の並び」として扱えます。メモリ効率が良い設計になっているため、大量の数値を扱う場合でも安心して使用できます。
range関数の基本的な構文
range関数には3つの使い方があります。それぞれ引数の数が異なり、動作も変わってきます。
パターン1:引数が1つの場合
最もシンプルな使い方は、引数を1つだけ指定する方法です。この場合、0から指定した数の1つ前までの整数が生成されます。
for i in range(5):
print(i) # 0, 1, 2, 3, 4 が出力される
この例では、range(5)によって0から4までの5つの数字が生成されます。「5」という数字自体は含まれない点に注意が必要です。初心者の方がよく混乱するポイントですが、「指定した数まで」ではなく「指定した数の手前まで」と覚えておきましょう。
なぜこのような仕様になっているかというと、プログラミングの世界では0から数え始める「0始まり」の文化があるためです。range(5)で5個の要素が得られるという考え方の方が、直感的でわかりやすいのです。
パターン2:引数が2つの場合
2つ目の使い方は、開始位置と終了位置を指定する方法です。第1引数が開始値、第2引数が終了値となります。
for i in range(3, 8):
print(i) # 3, 4, 5, 6, 7 が出力される
この場合、3から始まって8の手前の7まで生成されます。ここでも終了値である8は含まれません。この仕様は一貫しているので、慣れてしまえば自然に使えるようになります。
開始位置を指定できることで、「10から20まで」「50から60まで」といった、任意の範囲の数値を柔軟に扱えるようになります。データ処理やグラフ作成など、実務的な場面でも頻繁に使用される書き方です。
パターン3:引数が3つの場合
最も柔軟な使い方が、3つの引数を指定する方法です。第1引数が開始値、第2引数が終了値、そして第3引数が「ステップ」と呼ばれる増分値になります。
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8 が出力される
この例では、0から始まって2ずつ増えながら10の手前まで数値が生成されます。つまり、偶数だけを取り出すことができるわけです。
ステップには負の値も指定できます。負の値を指定すると、数値が減少していく並びを作れます。
for i in range(10, 0, -1):
print(i) # 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 が出力される
カウントダウンやデータの逆順処理など、様々な場面で活用できる便利な機能です。
range関数の引数を詳しく理解する
range関数の3つの引数について、もう少し詳しく見ていきましょう。
開始値(start)について
開始値は、数値の並びがどこから始まるかを指定します。省略した場合は自動的に0になります。開始値には負の整数も指定できます。例えば、range(-5, 5)とすれば、-5から4までの数値が得られます。
温度のデータ処理や座標計算など、マイナスの値を扱う場面でも問題なく使用できます。プログラミングでは正の数だけでなく負の数も頻繁に扱うため、この柔軟性は重要です。
終了値(stop)について
終了値は必ず指定しなければならない引数です。この値自体は範囲に含まれず、「この値の直前まで」という動作になります。
この「含まれない」という仕様には明確な理由があります。例えばrange(0, 10)とすると、ちょうど10個の要素が得られます。もし終了値が含まれる仕様だったら11個になってしまい、直感的ではありません。プログラミングでは「要素数」を基準に考えることが多いため、この仕様の方が使いやすいのです。
ステップ(step)について
ステップは、どのくらいの間隔で数値を増やす(または減らす)かを指定します。省略した場合は1になります。
ステップには0を指定できません。0を指定するとエラーが発生します。これは当然で、0ずつ増やしていたら永遠に同じ数値のままになってしまうからです。
ステップの値によって、様々なパターンの数値列を生成できます。3の倍数だけ取り出したいならステップを3に、5飛ばしで処理したいならステップを5にすればよいのです。
range関数の実践的な使い方
理論的な説明だけでなく、実際にどのような場面でrange関数を使うのか見ていきましょう。
単純な繰り返し処理
プログラムを書いていると、「この処理を10回実行したい」といった場面がよくあります。range関数を使えば、このような繰り返し処理を簡潔に書けます。
繰り返しの回数だけに注目したい場合、ループ変数の値自体は使わないこともあります。そんなときは、変数名にアンダースコア(_)を使う慣習があります。これは「この変数は使わない」という意思表示になります。
リストのインデックスアクセス
リストの各要素に順番にアクセスしたい場合、range関数とlen関数を組み合わせる方法があります。len関数はリストの長さを返すので、range(len(リスト名))とすれば、0から最後のインデックスまでの数値が得られます。
ただし、Pythonにはもっとシンプルな書き方があります。リストの要素自体に直接アクセスしたいだけなら、「for 要素 in リスト」という構文を使う方が一般的です。インデックス番号も同時に必要な場合は、enumerate関数を使うとより読みやすいコードになります。
数値計算や集計処理
範囲内の数値を使った計算処理にもrange関数は便利です。例えば、1から100までの合計を求めたい場合、range(1, 101)を使ってループを回し、各数値を足し合わせていけば実現できます。
数学的な処理、統計計算、データ分析など、連続した数値を扱うあらゆる場面で活用できます。Pythonには様々な数学関数やライブラリがありますが、基本となるのはこのrange関数を使ったシンプルなループ処理です。
range関数使用時の注意点とよくある間違い
初心者の方がrange関数を使う際によく陥る罠について説明します。
終了値が含まれないことを忘れる
最もよくある間違いは、終了値も範囲に含まれると思ってしまうことです。range(1, 10)と書いたとき、10も含まれると期待してしまうのです。
実際には10は含まれず、1から9までしか生成されません。「10まで」処理したい場合は、range(1, 11)と書く必要があります。最初は混乱するかもしれませんが、「指定した数の手前まで」と覚えておけば大丈夫です。
逆順にする際の引数の順序
数値を大きい方から小さい方へ並べたい場合、開始値を大きく、終了値を小さくするだけではうまくいきません。range(10, 0)と書いても、何も生成されないのです。
逆順にするには、必ず第3引数のステップに負の値を指定する必要があります。range(10, 0, -1)のように書いてはじめて、10から1までの逆順の数値が得られます。ステップの指定を忘れると期待通りに動かないので注意しましょう。
rangeオブジェクトとリストの違い
range関数が返すのは「rangeオブジェクト」であり、リストそのものではありません。画面に表示してみると、予想と違う出力になることがあります。
もし実際にリストとして扱いたい場合は、list()関数を使って変換する必要があります。ただし、ループで使うだけならrangeオブジェクトのままで十分です。むしろ、メモリ効率を考えると、rangeオブジェクトのまま使う方が推奨されます。
range関数を使いこなすためのコツ
range関数を効果的に使うためのポイントをいくつか紹介します。
可読性を意識する
コードは書くだけでなく、後から読んで理解できることも重要です。range関数を使う際も、何を意図しているか分かりやすく書きましょう。
例えば、マジックナンバー(何を意味するか分からない数値)を直接書くのではなく、変数に意味のある名前を付けて使うと良いでしょう。range(生徒の人数)のように書けば、何のための繰り返しなのか一目瞭然です。
必要に応じて他の手法も検討する
range関数は便利ですが、万能ではありません。Pythonには他にも様々な繰り返し処理の方法があります。
リストの要素に直接アクセスしたいだけなら、わざわざrangeとインデックスを使うより、直接ループを回す方がシンプルです。また、リスト内包表記を使えば、より簡潔なコードが書けることもあります。
状況に応じて最適な方法を選べるようになると、プログラミングスキルが一段階上がります。
実際に手を動かして試す
プログラミングは読むだけでなく、実際にコードを書いて実行してみることが上達の近道です。range関数の動作が今ひとつ理解できない場合は、実際にいろいろな引数で試してみましょう。
開始値、終了値、ステップを様々に変えて実験してみると、動作パターンが体感的に分かるようになります。エラーが出ても怖がらずに、どんな引数を指定するとエラーになるのか確かめてみるのも良い学習になります。
まとめ
range関数は、Pythonプログラミングの基礎となる重要な関数です。一見シンプルながら、様々な使い方ができる奥深い機能でもあります。
この記事で解説した内容を振り返ると:
range関数は連続した整数の並びを生成する関数で、主にループ処理で使用されます。引数の数によって1つから3つまでの使い方があり、開始値、終了値、ステップを指定できます。終了値は範囲に含まれないという重要な仕様があり、これを理解することが正しく使いこなすポイントです。
実践的には、単純な繰り返し処理から数値計算、データ処理まで幅広い場面で活躍します。ただし、場合によってはrange関数を使わない方がシンプルなコードになることもあるため、状況に応じた判断が大切です。
最初は戸惑うこともあるかもしれませんが、何度も使っているうちに自然と身についてきます。プログラミング学習は実践が何より重要なので、ぜひ実際にコードを書いて試してみてください。
range関数をマスターすれば、Pythonでのループ処理がぐっと書きやすくなり、プログラミングの幅が大きく広がります。焦らず一歩ずつ、着実に理解を深めていきましょう。
■らくらくPython塾 – 読むだけでマスター
■初心者歓迎「AI駆動開発/生成AIエンジニアコース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
格安のプログラミングスクールといえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
対面型でより早くスキル獲得、月額2万円のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<オンライン無料>ゼロから始めるPython爆速講座
