プログラミング言語には、ループ(繰り返し)処理と呼ばれる機構が備わっています。文字通り、繰り返し何かをしたい時に使います。
例えば、ある数列an = n(n = 1,2,3,4…..)があり、この数列のn=1~100における和を求めたいとします。この時、forを使わなければ「1+2+3+4+….」と面倒な手順を踏まなければなりませんが、forを使えば一瞬で答えを求めることができます。
forの基本的な構造
Pythonでforループを実行するためには、次のようなコードを書きます。
for 変数 in イテラブルオブジェクト:
処理
突然「イテラブルオブジェクト」というよく分からないワードが出てきました。イテラブルオブジェクトというのは、文字列やリスト、辞書(Dictionary)などを指します。
これだけだと少し分かりにくいので、いくつか例を示します。
例1:forループで足し算をする
sum = 0
for i in range(0,10):
sum += i
print(sum) #sum = 45
上記のコードは、forループを使って”sum”という変数に0から9までの整数を足しています。このコードにおいて、イテラブルオブジェクトは”range(0,10)”によって返されるリストです。range()は、指定した範囲の数字を含むリストを返すことができる関数で、forループで使うことができます。range()関数はforループで頻繫に利用するので、更に詳しく説明したいと思います。
range()関数の使い方
range()関数の書き方を例を挙げて説明します。
range(A)
range(A)(Aは正の整数)のように記述すると、関数は0から整数の範囲にある全ての整数が入ったリストを返します。ただし、「A」自身は含まれません。
例:
print(range(5))
#リスト([0,1,2,3,4])を返す
print(range(15))
#リスト([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])を返す
range(A,B)
range(A,B)のように記述すると、(整数A、Bは負でも良い)AからBまでの範囲に含まれる全ての整数を含むリストを返します。ただし、先ほどと同様に、整数Bはリストに含まれません。
例:
print(list(range(3,10)))
#リスト([3,4,5,6,7,8,9])を返す
print(list(range(-3,5)))
#リスト([-3,-2,-1,0,1,2,3,4])を返す
range(A,B,C)(特定の等差数列を返したい場合)
[1,3,5,7,9]のように、同じ差ずつ数が増えていく数列を「等差数列」と言います。このような数列を作りたい場合は、range(A,B,C)(A,B,Cは負の整数でも良い)と記述します。
ここで、Aが等差数列の初項、B-Cが等差数列の末項、Cが交差を示しています。今までの場合と同じく、「B」は生成されるリストに入らないため注意が必要です。
例:
print(list(range(1,15,2)))
#リスト([1,3,5,7,9,11,13])を返す
print(list(range(3,20,5)))
#リスト([3,8,13,18])を返す
print(list(range(30,5,-2)))
#リスト([30,28,26,24,22,20,18,16,14,12,10,8,6])を返す
print(list(range(-10,-2,3)))
#リスト([-10,-7,-4])を返す
まとめ
- forループを使うと、繰り返し処理ができる
- forループを使う際は、イテラブルオブジェクトを定義する必要がある
- range()を使って、簡単にイテラブルオブジェクトを生成できる