2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Python】for文の使い方の整理

Posted at

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文の多様な使い方を整理してみました。奥が深いですね。

2
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?