【Python】range関数の使い方を解説!具体的な使用例からよくある間違いまで!

range関数
  • URLをコピーしました!
困っている人

range関数ってどうやって使うの?

Pythonに欠かせない関数の1つに数列を作成できるrange関数があります。

この記事では、range関数の詳細についてその様々な応用例について解説します。

目次

range関数とは

Pythonのrange関数は、指定した範囲の連続した整数を生成するために使用されます。

range関数の公式は、次のような形式です

range(start, stop, step)
→start start+step start+2*step … stop-step

range(start, stop)
→start start+1 start+2 … stop-1

range(stop)
→0 1 2 … stop-1

上の形式では、startは数列の開始位置、stopは数列の終了位置(この値は含まれないことに注意)、stepは数列の増加量を指定します。これをパターン①と呼びましょう。

真ん中の形式ではstartは数列の開始位置、stopは数列の終了位置(この値は含まれないことに注意)を指定します。stepを省略したとき、stepは1です。これをパターン②と呼びましょう。

下の形式では、stopは数列の終了位置(この値は含まれないことに注意)を指定します。startを省略したとき、startは0です。パターン③と呼びましょう。

引数の数(カンマで区切られている文字の数)が3つなら上の形式、2つなら真ん中、1つなら下のように指定されます。

プログラマー

range関数は高校数学の「等差数列」に近いです

困っている人

等差数列は覚えていないし、文字だらけでよくわからないです…

プログラマー

そうですね。では実際に以下の例を見てみましょう

range関数の使用例

例1

range(2, 8)
→2 3 4 5 6 7

このコードは変数が2つ、つまりstepが省略されているのでパターン②ですね。

なので2から7(=8 -1)までの整数を生成し、それぞれの値を出力します。

例2

range(2,16,2)
→2 4 6 8 10 12 14

このコードは変数が3つ、つまりパターン①ですね。

なので2から14(= stopstep = 16-2)までの整数を生成し、それぞれの値を出力します。

例3

range(5)
→0 1 2 3 4

このコードは変数が1つ、つまりパターン③ですね。

なので0から4(= 5-1)までの整数を生成し、それぞれの値を出力します。

例4

stepに負の整数を入れることもできます。

その場合start>stopになるようにしましょう。(理由は後述)

range(8,3,-1)
→8 7 6 5 4

このコードは変数が3つ、つまりパターン③ですね。そして3つ目の変数が-1です。

なので8から4(= stopstep = 3-(-1))までの整数を生成し、それぞれの値を出力します。

プログラマー

stepが正の整数の時はstart<stopに、負の整数の時はstop>startにしましょう。なにも出力されなくなります。

range関数を使って実際に数列を生成するには

range関数を使用して実際に数列を生成しようとするとprint関数list関数を使用する必要があります。

その例について一緒に見てみましょう!

プログラマー

list関数リスト)print関数についてわからない方は下の記事からどうぞ!

numbers = list(range(1, 10, 2))

print(numbers)

このコードは、1から9までの整数を2ずつ増加させながら生成し、それらをリストに格納しています。結果として、出力されるリストは以下となります。

[1, 3, 5, 7, 9]

このように、range関数print関数list関数を使用することで、数列を簡単に生成することができます。

for文でのrange関数の使用

range関数は、for文と組み合わせることがとても多いです。

プログラマー

for文についてわからない方はこちらからどうぞ!

例1

for i in range(5):
    print(f"Count: {i}")

このコードは、range(5)の計算結果をひとつづつ i に代入していき出力します。結果として、出力されるのは以下となります。

Count: 0
Count: 1
Count: 2
Count: 3
Count: 4

例2

for _ in range(5):
    print(f"りんご")

このコードは「りんご」という文字列をrange(5)の個数だけ出力します。

range(5)の個数は 0 1 2 3 4で5つです。

結果として、出力されるのは以下となります。

りんご
りんご
りんご
りんご
りんご
困っている人

for文に利用可能なrange関数パターン③の時だけですか?

プログラマー

もちろんそんなことはありません。いずれのパターンでも利用可能です。

例3

ではfor文range関数パターン①の場合で表してみましょう。

for _ in range(1,14,4):
    print(f"たまねぎ")

このコードは「たまねぎ」という文字列をrange(1,14,4)の個数だけ出力します。

range(1,14,4)の個数は 1 5 9 13なので4つです。

結果として、出力されるのは以下となります。

たまねぎ
たまねぎ
たまねぎ
たまねぎ

このように、range関数を使用すると、繰り返し処理に便利な数列を生成することができます。

困っている人

プログラミングの幅が広がりました!

range関数を使用したリスト内包表記

range関数は、リスト内包表記と組み合わせても利用することができます。以下の例を見てみましょう。

プログラマー

リスト内表記に関する記事はこちらからどうぞ!

squares = [x ** 2 for x in range(5)]
print(squares)

このコードはrange(5)、つまり0から4までの整数を2乗した値をリストに格納しています。

結果として、出力されるのは以下となります。

[0, 1, 4, 9, 16]

このように、range関数を使用すると、リスト内包表記をより簡潔に書くことができるというわけですね。

range関数のよくある間違い

range関数を使用する際によくある間違いをいくつか紹介します。

間違い1

stepが正の整数の時にstartの値がstopの値以上になっている場合、もしくはstepが負の整数の時にstartの値がstopの値以下になっている場合、空の数列が生成されます。次の例を見てみましょう。

numbers = list(range(5, 1))

print(numbers)
[]

このコードの出力結果は空のリストとなります。

numbers = list(range(1, 5, -2))

print(numbers)
[]

このコードの出力結果もまた空のリストとなります。

間違い2

start,stop,step10進数の整数(-3,0,5など)でなければなりません小数(0.2)や無理数(πなど)、非10進数はエラーとなります。

プログラマー

10進数についての記事は下からどうぞ!

numbers = list(range(5.2))

print(numbers)
TypeError: 'float' object cannot be interpreted as an integer

上のエラーはfloat型は使ってはいけないという意味です。

プログラマー

(float型、int型など)についての記事は下からどうぞ!

他にも

numbers = list(range(2f))

print(numbers)
SyntaxError: invalid decimal literal

上のエラーは10進数以外は受け付けないという意味です。

以上が、range関数を使用する際によくある間違いの例です。

まとめ

この記事では、Pythonのrange関数について詳しく解説しました。

Pythonのrange関数は、プログラミングの基礎となる重要な機能です。ぜひ、活用して効率的なコーディングを行いましょう。

この記事がPythonの初心者の方にとって役立つ情報となれば幸いです。

range関数

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次