1. range関数の基本

Pythonの世界に足を踏み入れたばかりのあなたにとって、range関数は初めての強い味方になるでしょう。この関数は、数値のシーケンスを生成し、特にforループ内での繰り返し処理を簡単にするためによく使用されます。

1-1. range関数とは?

range関数は、指定された範囲にわたる整数のシーケンスを生成するPythonの組み込み関数です。
※シーケンス:あらかじめ決められた順序で処理を行うこと

最も基本的な使用法はrange(終了値)で、ここで終了値はシーケンスの上限を定めます(ただし、この上限の値は含まれません)

例えば、range(5)は0から4までの整数を生成します。

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

【出力結果】
0
1
2
3
4

上記のコードは、0から4までの数字を順番に出力します。

1-2. range関数の役割

range関数は、繰り返し処理を制御する際に、一定の範囲の整数を提供することで重要な役割を果たします。例えば、リストの各要素にアクセスしたい場合や、特定の回数だけ操作を繰り返したい場合に役立ちます。

# リストの各要素を出力する
numbers = [10, 20, 30, 40, 50] 

for i in range(len(numbers)): 
    print(numbers[i])

【出力結果】
10
20
30
40
50

このコードスニペットでは、リストnumbersの長さに合わせてrangeを使用し、リストの各要素に順番にアクセスしています。

2. range関数のシンプルな使い方

2-1. 単一の引数を使うrange

range関数の最も基本的な形は、単一の引数で使用する方法です。この単一の引数は、生成される数値シーケンスの終了点を指定し、始点は0となります。

Pythonでは、インデックスが0から始まるため、range(3)は0から2までの整数を生成します。

for i in range(3):
    print(i)

【出力結果】
0
1
2

ここで、range関数は0から始まり、指定された終了点の1つ前の数までの整数を順番に生成します。

2-2. ループでのrangeの活用

range関数は、forループとの組み合わせにより、コードの構造を明確にし、繰り返し処理を直感的に行うことができます。

例えば、特定の範囲の数値に基づいて繰り返し処理を行う場合、rangeを使用することで、コードの意図を明確に伝えることができます。

# 0から9までの数値で何かの処理を行う場合

for i in range(10):
    # ここに処理を記述
    pass

このシンプルな構造は、初心者にとって理解しやすく、Pythonプログラミングの基礎を固めるのに役立ちます。

また、range関数は、リストや文字列などのイテラブルオブジェクトの長さに基づいてループを作成する際にも有用です。

# リスト内の各フルーツに対してメッセージを出力する

fruits = ['apple', 'banana', 'cherry']

for i in range(len(fruits)):
    message = f"{i+1}番目のフルーツは{fruits[i]}です。"
    print(message)

このコードは、リスト fruits の各要素に対して、そのフルーツがリストの中で何番目にあるかを示すメッセージを出力します。

i+1 を使用して、1から表示されるようにしています。これにより、出力されるメッセージがより直感的になります。

出力結果は以下のようになります。

1番目のフルーツはappleです。
2番目のフルーツはbananaです。
3番目のフルーツはcherryです。

この例では、range 関数が生成するインデックスを使って、リストの各要素にアクセスし、それぞれのフルーツについての情報を出力しています。

もっと詳しく解説

もう一度先ほどの例文を見てみましょう。

for文について忘れた方は、こちらより再度ご確認ください。

# リスト内の各フルーツに対してメッセージを出力する

fruits = ['apple', 'banana', 'cherry']

for i in range(len(fruits)):
    message = f"{i+1}番目のフルーツは{fruits[i]}です。"
    print(message)

このコードを分解してみましょう。

  1. fruits['apple', 'banana', 'cherry'] という3つの要素を持つリストです。
  2. len(fruits) はリスト fruits の長さ、つまり要素の数を返します。この場合、len(fruits)3 です。
  3. range(len(fruits))range(3) と同じで、0から始まり2で終わる整数のシーケンスを生成します。つまり、0, 1, 2 の3つの数値です。
  4. for i in range(len(fruits)): は、この数値シーケンスを使ってループを実行します。ループの各繰り返しで、変数 i0 から 2 までの値を取ります。
  5. message = f"{i+1}番目のフルーツは{fruits[i]}です。" は、リスト fruitsi 番目の要素に対応するメッセージを作成します。i+1 は、人間が通常1から数を数えるために使用されます。
  6. print(message) は、作成したメッセージを出力します。ループが進むにつれて、i の値は0から1、2へと変わります。その結果、リストの各要素に対するメッセージが順番に出力されます。

結果として、このコードはリスト fruits の全ての要素について、その順番と名前を出力します。出力は以下のようになります。

1番目のフルーツはappleです。
2番目のフルーツはbananaです。
3番目のフルーツはcherryです。

この方法は、リストの要素をインデックスによって参照したり、特定の条件で処理を行ったりする際に使用されます。

例えば、リストの各要素に何かしらの操作を加えたい場合や、特定の要素だけを抽出したい場合などに役立ちます。

3. 開始値と終了値を指定する

range 関数は、単に0から始まるシーケンスを生成するだけではありません。

開始値と終了値を指定することで、任意の範囲の整数シーケンスを作成することができます。これは、特定の範囲内で繰り返し処理を行いたい場合に非常に便利です。

3-1. 二つの引数を使うrange

range 関数に2つの引数を渡すと、最初の引数がシーケンスの開始値、2番目の引数が終了値(この値は含まれない)となります。

例えば、range(5, 10) は5から始まり9で終わる整数のシーケンスを生成します。

for i in range(5, 10):
    print(i)

【出力結果】
5
6
7
8
9

3-2. 開始値と終了値の具体例

開始値と終了値を指定することで、例えばある範囲の数値で何かしらの計算を行いたい場合や、特定の範囲のインデックスにあるリストの要素にアクセスしたい場合に役立ちます。

# 3から8までの数値で平方数を計算する
for i in range(3, 9):
    square = i * i
    print(f"{i}の平方は{square}です。")

このコードは各数値の平方を計算し、出力結果は以下のようになります。

3の平方は9です。
4の平方は16です。
5の平方は25です。
6の平方は36です。
7の平方は49です。
8の平方は64です。

このように、range 関数を使って特定の範囲の数値に対して操作を行うことができます。

これは、数学的な計算だけでなく、データの操作など、様々なケースで有用です。

4. ステップ値で間隔を設定する

Pythonの range 関数は、数値のシーケンスを生成する際に、開始値、終了値だけでなく、ステップ値(間隔)も指定することができます。

これにより、特定の間隔で数値をスキップしながらシーケンスを作成することが可能になります。

4-1. 三つの引数を使うrange

range 関数には、最大で3つの引数を指定することができます。

これらはそれぞれ開始値、終了値、そしてステップ値です。

range(開始値, 終了値, ステップ値)

開始値はシーケンスの最初の数値を、終了値はシーケンスが終了する前の最後の数値を指定します。ステップ値は、シーケンス内の連続する数値間の差を定義します。

例えば、1から始まり10までの奇数のシーケンスを生成する際、以下の range 関数を使用します。

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

【出力結果】
1
3
5
7
9

4-2. ステップ値の効果

ステップ値を使用すると、シーケンスの柔軟性が大幅に向上します。

例えば、逆順のシーケンスを生成したい場合や、特定の間隔で数値を取得したい場合に便利です。

逆順のシーケンスを生成するには、ステップ値に負の数を指定します。例として、10から1まで逆順に数値を出力するには、以下のように書きます。

for i in range(10, 0, -1):
    print(i)

【出力結果】
10
9
8
7
6
5
4
3
2
1

ステップ値を使うことで、数値のシーケンスをよりコントロールしやすくなり、プログラムのさまざまなニーズに応じて柔軟に対応できるようになります。

これは、Pythonでの繰り返し処理や、データ操作を行う際に非常に有用な機能です。

5. range関数の実践的な例

Pythonの range 関数は、単にループで繰り返しを行うだけでなく、実際のプログラミングの問題を解決するためにも使われます。

ここでは、range関数を使用して数値リストを生成したり、条件付きでシーケンスを作成したりする方法を解説していきます。

5-1. 数値リストの生成

range 関数は、特定の範囲の数値リストを簡単に生成するために使用できます。

例えば、0から99までの数値を含むリストを作成したい場合、range 関数を list 関数と組み合わせて使用することができます。

numbers = list(range(100))
print(numbers)

【出力結果】
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

このコードは0から99までの数値を含むリストを出力します。これは、データ分析やテストデータの生成など、さまざまなシナリオで役立ちます。

5-2. 条件付きシーケンスの作成

条件付きでシーケンスを作成する場合、range 関数を使って基本的なシーケンスを生成し、その後で条件を適用して特定の要素を抽出することができます。

例えば、1から100までの数値の中で、3の倍数だけをリストにしたい場合、以下のように書くことができます。

multiples_of_three = [i for i in range(1, 101) if i % 3 == 0]
print(multiples_of_three)

【出力結果】
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

このコードは、1から100までの数値の中で3で割り切れる数値のみを含むリストを出力します。

また、リスト内包表記を使用することで、コードを簡潔にし、読みやすくしています。

このように range 関数は、Pythonでのプログラミングにおいて非常に汎用性が高く、初心者から上級者まで幅広く利用される機能です。

数値のシーケンスを扱う際には、この関数を活用することで、コードの効率性と可読性を向上させることができます。