Pythonのrange()関数:連続した数値シーケンスを生成する方法

Pythonでプログラミングを行う際、for ループ(繰り返し処理)を「5回だけ実行したい」や、「10から20までの連続した数値が欲しい」といった場面が頻繁にあります。

このような場合に使うのが range() 関数です。range() は、それ自体がリスト(list)なのではなく、指定されたルールの「連続した数値シーケンス(数列)」を生成するためのオブジェクトです。

この記事では、range() の基本的な使い方を3つのパターンに分けて解説します。range() オブジェクトの中身は、list() 関数で囲むことでリストとして確認できます。

目次

1. range(stop) – 引数が1つの場合 (0から開始)

range() に引数を1つだけ(stop)指定すると、0から始まり、stop の手前(stop - 1)までの整数のシーケンスが生成されます。

# 0 から 5 の手前 (4) までのシーケンス
seq1 = range(5)
print(f"range(5) -> {list(seq1)}")

実行結果:

range(5) -> [0, 1, 2, 3, 4]

2. range(start, stop) – 引数が2つの場合 (開始と終了)

引数を2つ(start, stop)指定すると、start から始まり、stop の手前(stop - 1)までのシーケンスが生成されます。

# 100 から 103 の手前 (102) までのシーケンス
seq2 = range(100, 103)
print(f"range(100, 103) -> {list(seq2)}")

実行結果:

range(100, 103) -> [100, 101, 102]

3. range(start, stop, step) – 引数が3つの場合 (ステップ指定)

引数を3つ(start, stop, step)指定すると、start から stop の手前まで、step おきにstep の間隔で)シーケンスが生成されます。

# 10 から 31 の手前まで、10 ずつ増やしながら
seq3 = range(10, 31, 10)
print(f"range(10, 31, 10) -> {list(seq3)}")

実行結果:

range(10, 31, 10) -> [10, 20, 30]

4. step に負の値を指定(逆順)

step に負の値を指定すると、start から stop に向かって減少していくシーケンス(逆順)を生成できます。この場合、startstop よりも大きい値である必要があります。

# 3 から 0 の手前 (1) まで、-1 ずつ減らしながら
seq4 = range(3, 0, -1)
print(f"range(3, 0, -1) -> {list(seq4)}")

実行結果:

range(3, 0, -1) -> [3, 2, 1]

stop に指定した 0 は含まれない点に注意してください。

for ループでの活用

range() は、list() で変換しなくても for ループで直接使用するのが最も一般的です。これにより、巨大なリストをメモリ上に作成することなく、効率的に繰り返し処理を実行できます。

print("--- ループ開始 ---")
# 0, 1, 2 の 3回ループする
for i in range(3):
    print(f"現在の i の値: {i}")

print("--- ループ終了 ---")

実行結果:

--- ループ開始 ---
現在の i の値: 0
現在の i の値: 1
現在の i の値: 2
--- ループ終了 ---

まとめ

  • range(stop): 0から stop-1 まで
  • range(start, stop): start から stop-1 まで
  • range(start, stop, step): start から step おきに stop-1 まで
  • step に負の値を指定すると逆順のシーケンスを作成できます。
  • for ループと組み合わせて使うのが最も一般的です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次