1.はじめに
私のプログラミングは、MATLABがベースであります。
Pythonを始めたとき、For文の使い方がMATLABと大きく異なったため、大変な時期がありました。
今日は、PythonのFor文の使い方を整理します。
1.1.MatlabでのFor文
形式
for 変数=初期値:増分:最終値
statements
end
必ずfor変数を宣言して、その初期値:最終値を入れる必要があります。
x = ones(1,10);
for n=2:6
x(n) = 2 * x(n-1);
end
2.PythonでのFor文
形式
for 変数 in リスト(or Tuple, Dictionary等):
statements
Matlabのように、変数の初期値:最終値を宣言するのではなく、リストを宣言することに注意しましょう。この部分の概念が大きく異なります。
2.1.典型的なFor文
リストを作成し、その要素をprintする。
test_list = ['one','two','three']
for i in test_list: #<-one, two, threeを順序にiに代入する。
print(i)
Result
one
two
three
2.2.多様なFor文
リストの要素がTupleの場合、
a = [(1,2),(3,4),(5,6)]
for (first, last) in a:
print('first element:', first)
print('last element :', last)
print('sum of first and last element =', first + last)
Result
first element: 1
last element : 2
sum of first and last element = 3
first element: 3
last element : 4
sum of first and last element = 7
first element: 5
last element : 6
sum of first and last element = 11
2.3.応用
5名の学生のテストを受けたとします。テストスコアが60点を超えた場合は、合格とします。そうでない場合は、不合格とします。テストスコアによって合格・不合格を表示するプログラムを作成します。
score = [90,25,67,45,80] #テストスコア
number = 0 #学生に付ける番号
for mark in score: #<- 90,25,67,45,80を順序にmarkに代入する。
number = number + 1
if mark >= 60:
print("{:d} 番目の学生は合格です。".format(number))
else:
print("{:d} 番目の学生は不合格です。".format(number))
Result
1 番目の学生は合格です。
2 番目の学生は不合格です。
3 番目の学生は合格です。
4 番目の学生は不合格です。
5 番目の学生は合格です。
2.4.よく使うrange()
for文は数字リストを自動に作るrangeという関数とともに使われることが多いです。
ar = range(1,11) %<- 1,2,3,4,5,6,7,8,9,10
range()で作られたarは、リストではなくrangeオブジェクトであることに注意しましょう。
type(ar)
Result
range
それでは、for文とrange()を使い、1から10までの和を求めるコードを作成します。
sum = 0
for i in range(1,11):
sum = sum + i
print(sum)
Result
55
先ほどの60点以上の場合、合格という文章を出力するコードは、下記のように書き換えられます。
score = [90,25,67,45,80]
for number in range(len(score)):
if score[number] >= 60:
print("{:d} 番目の学生は合格です。".format(number))
else:
print("{:d} 番目の学生は不合格です。".format(number))
Result
0 番目の学生は合格です。
1 番目の学生は不合格です。
2 番目の学生は合格です。
3 番目の学生は不合格です。
4 番目の学生は合格です。
2.5.リストの中にfor文を入れる
aというリストを作成し、各要素を3倍した結果をresultというリストに格納するコードです。
a = [1,2,3,4]
result = []
for yoso in a:
result.append(yoso*3)
print(result)
Result
[3, 6, 9, 12]
これを、リストの中にfor文を入れる方法を使うことで、次のように簡略なコードにすることが可能です。
a = [1,2,3,4]
result = [num * 3 for num in a]
Result
[3, 6, 9, 12]
もし、偶数だけに3倍した場合、次のようにif文を追加すればいいです。
a = [1,2,3,4]
result = [num * 3 for num in a if num%2 ==0]
Result
[6, 12]
3.まとめ
Pythonのfor文の多様な使い方を整理してみました。奥が深いですね。