プログラミングで基本的なことは繰り返しです。
大きく分けると
- あるグループの要素すべてについて繰り返す
- ある条件を満たすまで繰り返す
の2つです。
Pythonでいうとこれらはfor, while, ifという構文を用いることで実現できます。
まずこのページではfor文について説明します。
forをつかった繰り返しのプログラム
for 変数 in グループ:
____実行処理
※ ____はインデント
です。インデントはタブかスペース4つです。
実行処理の部分を行うとき、
実行処理内の変数部分にグループ要素を代入して、
要素すべてに関して実行処理を行います。
グループの要素をリストで表します。
a = [1, 3, 7]
for i in a:
print(i)
1
3
7
流れを見ていくと、
#aの最初要素 1 に対して
i = 1 iに1代入
print(i) >> 1 出力
#aの2番目の要素 3に対して
i = 3 iに3代入
print(i) >> 3 出力
#aの3番目の要素 7に対して
i = 7 iに7代入
print(i) >> 7 出力
終了
という流れです。
それぞれの要素の式を計算することもできます。
a = [1, 3, 7]
b = 0
for i in a:
b = b + i
print(b)
1
4
11
同様に流れを見ていきます
#iにaの最初要素 1 が入る
b = 0 + 1 (bに1が入る)
print(b) >> 1 出力
#iにaの2番目の要素 3 が入る
b = 1 + 3 (bに4が入る)
print(b) >> 4 出力
#iにaの3番目の要素 7 が入る
b = 4 + 7 (bに11が入る)
print(b) >> 11 出力
となっています。
この
b = b + i
は
b += i
と書くことができます。
1行の同じ変数が違う値を示してしまうので、
下の方がスッキリしています。
forを使った構文の例
いくつか他の例も示します
0から10まで足していく
answer = 0
for i in range(11): #range(11)は0から11の整数
answer += i
print(answer)
0
1
3
6
10
15
21
28
36
45
55
フィボナッチ数列を100項目まで求める
a = [1, 1] #初めの2項を定義
for _ in range(98): # 98回処理を行う
a_i = a[-2] + a[-1] # aの1個前と2個前の要素を足し、a_iに代入
print(a_i) # a_iを出力
a.append(a_i) #a_iを新しい要素として追加
ここで
for _ in range(98):
は、変数は特にもちいないけれども、
for以下の処理を98回繰り返すことを表しています。
2
3
5
・
・
・
218922995834555169026
354224848179261915075
考え方でいろいろな使いみちがありますね。
forを入れ子にする
forは入れ子にすることもできます。
for 変数 in グループ①:
____for 変数 in グループ②:
________実行処理
という書き方で、
グループ①の最初の要素を代入
グループ②内の要素をすべて実行
グループ①の2番目の要素を代入
グループ②内の要素をすべて実行
・
・
となります。
例えば3×3のリストを用意します。
\begin{bmatrix}
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9\\
\end{bmatrix}
matrix = [[1,2,3],[4,5,6],[7,8,9]]
として
for i in range(3):
for j in range(3):
print(matrix[i][j])
とすると、jすべてをiの各要素ずつについて書き出すため、
1
2
3
4
5
6
7
8
9
と行ごとにmatrixの要素が書き出されますが、
for j in range(3):
for i in range(3):
print(matrix[i][j])
とするとiすべてをj一つ一つの要素について書き出すので
1
4
7
2
5
8
3
6
9
のように列ごとに要素が書き出されます。