概要
Python
のrange
関数は、指定された範囲内の整数シーケンスを生成するために使われます。特に繰り返し処理で頻繁に利用され、数値の列を簡単に操作できます。この記事では、range
関数の基本的な使い方から、応用的な使用例、オプションパラメータまで詳しく解説します。
range関数の基本構文
range(start, stop, step)
パラメータ
start
(オプション)生成するシーケンスの開始値。デフォルトは0です。stop
シーケンスの終了値。この値自体は含まれず、stop - 1
までの範囲が生成されます。step
(オプション)シーケンスの増分。デフォルトは1です。負の値を指定すると、逆方向のシーケンスを作成できます。
戻り値
range
関数は、イテラブルなrange
オブジェクトを返します。これは直接リストとして扱うことはできませんが、forループやリストに変換して使用することが可能です。
使用例
基本的な使い方
最もシンプルな使い方は、stop
パラメータのみを指定する方法です。start
が省略され、デフォルトで0からstop-1
までの整数シーケンスが生成されます。
for i in range(5):
print(i)
出力は次のようになります。
0
1
2
3
4
この例では、range(5)
が0
から4
までの整数を生成しています。繰り返し処理の制御に非常に便利です。
start
とstop
を指定する
start
とstop
の両方を指定することで、任意の範囲のシーケンスを生成できます。
for i in range(3, 8):
print(i)
出力は次の通りです。
3
4
5
6
7
ここでは、3から7までの整数シーケンスが生成されています。
step
を使った増減の指定
step
を指定することで、生成される数値の増分や減分をコントロールできます。例えば、2ずつ増加するシーケンスを生成する場合は以下のようにします。
for i in range(0, 10, 2):
print(i)
出力は次の通りです。
0
2
4
6
8
また、step
に負の値を指定することで、減少するシーケンスも作成可能です。
for i in range(10, 0, -2):
print(i)
出力結果は次のようになります。
10
8
6
4
2
リストへの変換
range
オブジェクトは直接リストとして扱うことはできませんが、list()
関数を使ってリストに変換できます。
numbers = list(range(5))
print(numbers)
この場合、出力は次のようになります。
[0, 1, 2, 3, 4]
リスト形式で操作したい場合、list()
関数と組み合わせることで柔軟に活用できます。
range関数の応用例
インデックスを使ったループ
リストやタプルなどのコレクションのインデックスを使ったループ処理には、range
が便利です。
fruits = ['apple', 'banana', 'cherry']
for i in range(len(fruits)):
print(f"Index {i}: {fruits[i]}")
出力は次の通りです。
Index 0: apple
Index 1: banana
Index 2: cherry
range(len(コレクション))
を使用することで、インデックスを使った処理が簡単に行えます。
逆順でのループ処理
先ほど紹介したように、step
に負の値を指定することで、逆順のループが可能です。例えば、リストを逆順で処理する場合は次のようにします。
for i in range(len(fruits) - 1, -1, -1):
print(fruits[i])
出力結果は次の通りです。
cherry
banana
apple
range
関数を使えば、簡単に逆順での繰り返し処理ができます。
特定の範囲での条件付きループ
range
を使ったループは、特定の条件に基づいてシーケンス内の値を処理する際にも役立ちます。例えば、偶数だけを処理したい場合は次のようにします。
for i in range(0, 10):
if i % 2 == 0:
print(f"{i} is even")
出力は次のようになります。
0 is even
2 is even
4 is even
6 is even
8 is even
rangeとメモリ効率
range
関数は非常にメモリ効率が高いです。生成されたrange
オブジェクトは、リストのように全ての値を一度にメモリに保持するのではなく、イテラブル(必要な時に値を生成する)なオブジェクトとして扱われます。これにより、大規模なシーケンスを生成してもメモリを無駄に消費せずに済みます。
例えば、次のような大きな範囲を生成しても問題ありません。
range_obj = range(1, 1000000)
この場合でも、メモリを無駄に消費せず、必要に応じて数値が生成されます。
まとめ
Python
のrange
関数は、整数のシーケンスを効率的に生成するための非常に強力なツールです。繰り返し処理や数値の操作、シーケンスの生成において幅広く利用され、パラメータとしてstart
、stop
、step
を組み合わせることで柔軟な操作が可能です。また、range
オブジェクトはメモリ効率が良く、大規模なシーケンスでも問題なく処理できます。これらの特性を活用して、効率的な繰り返し処理やデータ操作を行いましょう。