1.はじめに
私のプログラミングは、MATLABがベースであります。
Pythonを始めたとき、For文の使い方がMATLABと大きく異なったため、大変な時期がありました。
今日は、PythonのFor文の使い方を整理します。
1.1.MatlabでのFor文
形式
for 変数=初期値:増分:最終値
statements
end
必ずfor変数を宣言して、その初期値:最終値を入れる必要があります。
x=ones(1,10);forn=2:6x(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']foriintest_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)ina: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#学生に付ける番号
formarkinscore:#<- 90,25,67,45,80を順序にmarkに代入する。
number=number+1ifmark>=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=0foriinrange(1,11):sum=sum+iprint(sum)
Result
55
先ほどの60点以上の場合、合格という文章を出力するコードは、下記のように書き換えられます。
score=[90,25,67,45,80]fornumberinrange(len(score)):ifscore[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=[]foryosoina:result.append(yoso*3)print(result)
Result
[3, 6, 9, 12]
これを、リストの中にfor文を入れる方法を使うことで、次のように簡略なコードにすることが可能です。
a=[1,2,3,4]result=[num*3fornumina]
Result
[3, 6, 9, 12]
もし、偶数だけに3倍した場合、次のようにif文を追加すればいいです。
a=[1,2,3,4]result=[num*3fornuminaifnum%2==0]
Result
[6, 12]
3.まとめ
Pythonのfor文の多様な使い方を整理してみました。奥が深いですね。