range()関数でできること全リスト|Pythonループ最強テク29選

python

Pythonで繰り返し処理を書くとき、必ずと言っていいほど登場するのが range() 関数。
でも、「0〜10まで繰り返す」だけで使っていませんか?

実は range() には、意外と知られていない便利テクニックがたくさんあります。
この記事では、基本から応用まで29個の活用法を一挙にご紹介します。


  1. ✅ range()の基本構文をおさらい
  2. 🔥【初心者〜中級者】今すぐ使えるrangeテク15選
    1. 1. 数値を繰り返す基本のforループ
    2. 2. 負の値で逆順ループ
    3. 3. 偶数だけループしたい
    4. 4. 奇数だけループしたい
    5. 5. rangeとlenの組み合わせでリスト処理
    6. 6. リストのインデックスを取得したいならenumerateがベスト
    7. 7. 複数のループをネストする(九九の例)
    8. 8. リストを一定間隔でスライス
    9. 9. rangeとzipを合わせて2つのリストを並列処理
    10. 10. 特定の回数だけ関数を実行
    11. 11. for文を一行で書く(内包表記)
    12. 12. range()と条件分岐の組み合わせ
    13. 13. rangeオブジェクトはメモリ効率がいい
    14. 14. リスト変換も可能
    15. 15. range()を逆順にしたいときはreversed
  3. 💡【あまり知られていない】range活用アイデア14選
    1. 16. rangeのステップに負数を使うと逆順にできる
    2. 17. rangeとdictでID付き辞書を作成
    3. 18. rangeはfor以外にも使える(map、filter等)
    4. 19. グリッド生成(2次元配列の処理)
    5. 20. rangeにfloatは使えない → np.arangeなどを使う
    6. 21. rangeとtime.sleepで簡易タイマー
    7. 22. rangeを使って乱数の分布を取る(ヒストグラム作成用の区切り)
    8. 23. rangeとbreak/continueを併用して条件制御
    9. 24. 大量ループの高速化:rangeではなくxrange(Python2)→ Python3ではrangeでOK
    10. 25. Python3.10以降、match-caseと組み合わせると便利
    11. 26. rangeをpandasと組み合わせる
    12. 27. 非常に大きな範囲(10億回)でもイテレートできる(ジェネレータ特性)
    13. 28. rangeで日付を処理(ただしdatetimeと組み合わせ必須)
    14. 29. rangeとitertools.productで組み合わせの全列挙
  4. ✅ まとめ:range()はループだけじゃもったいない!
    1. 🧠補足:range()でよくあるエラー
  5. 🎁おまけ:range() vs numpy.arange の比較表

✅ range()の基本構文をおさらい

書き方意味
range(stop)0からstopの手前までrange(5) → 0~4
range(start, stop)startからstopの手前までrange(3, 7) → 3~6
range(start, stop, step)step刻みで繰り返しrange(2, 10, 2) → 2, 4, 6, 8

🔥【初心者〜中級者】今すぐ使えるrangeテク15選

1. 数値を繰り返す基本のforループ

for i in range(5):
    print(i)
# 0〜4 を出力

2. 負の値で逆順ループ

for i in range(10, 0, -1):
    print(i)
# 10〜1 を逆順で出力

3. 偶数だけループしたい

for i in range(0, 11, 2):
    print(i)

4. 奇数だけループしたい

for i in range(1, 11, 2):
    print(i)

5. rangeとlenの組み合わせでリスト処理

names = ['Alice', 'Bob', 'Charlie']
for i in range(len(names)):
    print(i, names[i])

6. リストのインデックスを取得したいならenumerateがベスト

for i, name in enumerate(names):
    print(i, name)

7. 複数のループをネストする(九九の例)

for i in range(1, 10):
    for j in range(1, 10):
        print(f"{i}×{j}={i*j}")

8. リストを一定間隔でスライス

lst = list(range(20))
for i in range(0, len(lst), 5):
    print(lst[i:i+5])

9. rangeとzipを合わせて2つのリストを並列処理

a = [1, 2, 3]
b = ['a', 'b', 'c']
for i in range(len(a)):
    print(a[i], b[i])

10. 特定の回数だけ関数を実行

for _ in range(3):
    print("Hello!")

_ を使うのは「使わない変数」を明示するPythonの慣習。

11. for文を一行で書く(内包表記)

squared = [i**2 for i in range(10)]

12. range()と条件分岐の組み合わせ

for i in range(20):
    if i % 3 == 0:
        print(i)

13. rangeオブジェクトはメモリ効率がいい

r = range(1_000_000_000)  # 1GBでも余裕

14. リスト変換も可能

list(range(5))  # → [0, 1, 2, 3, 4]

15. range()を逆順にしたいときはreversed

for i in reversed(range(5)):
    print(i)

💡【あまり知られていない】range活用アイデア14選

16. rangeのステップに負数を使うと逆順にできる

(応用:後ろから数えるロジックに)

17. rangeとdictでID付き辞書を作成

users = {i: f"user{i}" for i in range(1, 6)}

18. rangeはfor以外にも使える(map、filter等)

19. グリッド生成(2次元配列の処理)

grid = [[(i, j) for j in range(3)] for i in range(3)]

20. rangeにfloatは使えない → np.arangeなどを使う

21. rangeとtime.sleepで簡易タイマー

import time
for i in range(5, 0, -1):
    print(i)
    time.sleep(1)

22. rangeを使って乱数の分布を取る(ヒストグラム作成用の区切り)

23. rangeとbreak/continueを併用して条件制御

for i in range(10):
    if i == 5:
        break

24. 大量ループの高速化:rangeではなくxrange(Python2)→ Python3ではrangeでOK

25. Python3.10以降、match-caseと組み合わせると便利

for i in range(5):
    match i:
        case 0: print("zero")
        case 1: print("one")

26. rangeをpandasと組み合わせる

import pandas as pd
df = pd.DataFrame({"id": range(1, 6)})

27. 非常に大きな範囲(10億回)でもイテレートできる(ジェネレータ特性)

28. rangeで日付を処理(ただしdatetimeと組み合わせ必須)

29. rangeとitertools.productで組み合わせの全列挙

from itertools import product
for i, j in product(range(3), range(3)):
    print(i, j)

✅ まとめ:range()はループだけじゃもったいない!

range()はただの「数値をカウントする」関数ではありません。
発想を変えれば、データ構造の生成・繰り返し処理・組み合わせの生成など幅広く使える万能ツールです。

以下のように分類して、使いこなしましょう:

カテゴリテク例
基本1〜10, 偶数、奇数
応用ネスト、enumerate、内包表記
実務向けpandas連携、辞書生成、grid生成
実験・研究向けヒストグラム、product、match-case

🧠補足:range()でよくあるエラー

エラー例原因解決策
TypeError: 'float' object cannot be interpreted as an integerrangeはintのみint()で変換 or numpy.arange使う
range() arg 3 must not be zeroステップに0を指定step≠0 にする

🎁おまけ:range() vs numpy.arange の比較表

機能range()np.arange
整数対応
浮動小数点対応×
メモリ効率
リスト変換可能可能

コメント

タイトルとURLをコピーしました