#[Python]05章-03 for文~リストからの要素取り出し~
どのプログラムでもそうですが、基本的には以下の処理形式があります。
- 順次処理
- 制御(分岐)
- 繰り返し
順次処理は、「代入する」「加算する」といった処理、制御は「if文」による分岐処理です。今回はこの繰り返しについて触れていきたいと思います。
繰り返し処理についてもいろいろ種類があるのですが、まずはfor文について見ていきましょう。
##for文~リストからの取り出し処理~
まずは、リストから要素を取り出す処理を見ていきたいと思います。
for文については以下のように記載します。
for 変数 in 繰り返し対象:
処理内容
基本的には、「繰り返し対象」の個所にリストを記載していきます。このリストの要素の数だけ、for文内を繰り返します。
実際にプログラムを書いて確認してみましょう。chap05の中に、05-03-01.pyというファイル名でファイルを作成し、以下のコードを書いてください。
TohokuL = ['Aomori', 'Iwate', 'Akita', 'Miyagi', 'Yamagata', 'Fukushima']
for i in TohokuL:
print(i)
print('For文から抜けました。')
<05-03-01.py実行結果>
【実行結果】
Aomori
Iwate
Akita
Miyagi
Yamagata
Fukushima
For文から抜けました。
順に追ってみます。まず、
TohokuL = ['Aomori', 'Iwate', 'Akita', 'Miyagi', 'Yamagata', 'Fukushima']
でリストTohokuLを作成しましたが、これはリストで説明しました。
次に、forの中身に行きます。今回の繰り返し対象はTohokuLの6つの要素です。つまりループは6回繰り返されることになります。
【1ループ目】
TohokuLの0番目である'Aomori'が処理されます。この'Aomori'はiという変数に代入されます。
そしてそのままfor文内の処理がされ、iの中身である'Aomori'が出力されるのです。
そしてそのまま、for文に戻ります。
【2ループ目】
TohokuLの1番目である'Iwate'が処理されます。先ほどと同じく、'Iwate'はiという変数に代入されます。
そして、for文内の処理がされ、iの中身である'Iwate'が出力されるのです。
そしてそのまま、for文に戻ります。
【3ループ目】
TohokuLの2番目である'Akita'が処理されます。先ほどと同じく、'Akita'はiという変数に代入されます。
そして、for文内の処理がされ、iの中身である'Alita'が出力されるのです。
そしてそのまま、for文に戻ります。
**これを6ループまで繰り返します。**6ループ目が終わると、初めてfor文の処理から抜け出して、それ以降の処理(今回は、「For分から抜けました」と出力)を行います。
※ちなみに、リストでなく、タプルで実施しても出力されます。
##for文による和の計算
for文の基本的な問題として、リスト内にある整数の和(sum)を求めることを考えます。
例えば、numL = [5, 8, 9, 1, 2]という整数のリストがあったときに、和を計算して、25と出力するプログラムを作成します。chap05の中に、05-03-02.pyというファイル名でファイルを作成し、以下のコードを書いてください。
sum = 0
numL = [5, 8, 9, 1, 2]
for n in numL:
sum += n
print(f'{numL}のリスト要素の和:{sum}')
<05-03-02.py実行結果>
【実行結果】
[5, 8, 9, 1, 2]のリスト要素の和:25
まず、sum = 0についてです。
このsum変数に和を求めます。ですが、いきなりsumが現れると、sum変数の中身がわからない状態です。そこで、0で初期化しておきます。(この時点でsum = 0)
次にリストを作成しています。**numL = [5, 8, 9, 1, 2]**としています。
そして、for文の処理に入ります。
【1ループ目】
まず、numLで0番目の要素である5が取り出され、nに代入されます。そして、sum += nは「02章-01」でも説明した、代入演算子です。
つまり、「sum += n」は「sum = sum + n」と同じことです。なので、sumに5が足されてた結果がsumに代入され、結果sumの値は5になります。
sum = 0 + 5
そしてそのまま、for文に戻ります。(この時点でsum = 5)
【2ループ目】
numLで1番目の要素である8が取り出され、nに代入されます。そして、sumに8が足されてた結果がsumに代入され、結果sumの値は13になります。
sum = 5 + 8
そしてそのまま、for文に戻ります。(この時点でsum = 13)
【3ループ目】
numLで2番目の要素である9が取り出され、nに代入されます。そして、sumに9が足されてた結果がsumに代入され、結果sumの値は22になります。
sum = 13 + 9
そしてそのまま、for文に戻ります。(この時点でsum = 22)
【4ループ目】
numLで3番目の要素である1が取り出され、nに代入されます。そして、sumに1が足されてた結果がsumに代入され、結果sumの値は23になります。
sum = 22 + 1
そしてそのまま、for文に戻ります。(この時点でsum = 23)
【5ループ目】
numLで4番目の要素である2が取り出され、nに代入されます。そして、sumに2が足されてた結果がsumに代入され、結果sumの値は25になります。
sum = 23 + 2
そしてそのまま、for文に戻ります。(この時点でsum = 25)
そうして、for文から抜けます。その結果が25と出力されております。
##演習問題
演習問題を用意しました。ぜひ解いてみてください。なお、ファイル名は[ ]内に指定したものを使用して、chap05内に作成ください。使用する変数名は好きな変数名を指定してかまいません。
[05-03-p1.py]
【1】numL=[3, 5, 6, 10, 7, 8]のリストを設定し、平均値を求めるプログラムを作成してください。
[05-03-p2.py]
【2】numL=[3, 5, 6, 10, 7, 8]のリストを設定し、奇数のみを出力するプログラムを作成してください。(ヒント:if文を使います)
##最後に
繰り返しもif文同様にどこでも登場するプログラムです。特に、情報処理技術者試験ではアルゴリズム関連の問題では必ず出てきますので、ぜひ押さえておきましょう。
###【目次リンク】へ戻る