繰り返し処理でもっとプログラミング

前回はif文をやりました。

 
今回はfor文です。
for文の役割は同じ処理を繰り返すことです。Pythonのfor分の特徴は任意のシーケンス型を設定して、繰り返すことです。
この説明では何のことだかよくわからないですね...。とりあえず、公式チュートリアルに掲載されている例を見てみましょう。
>>> words = ['cat', 'window', 'defenestrate']
>>> for w in words:
...     print(w, len(w))
...
cat 3
window 6
defenestrate 12

まず、1行目を見るとwordsという変数に3つの文字列を持つリストを代入しています。シーケンス型とはリストのように複数の値を順番に並べたものをひとかたまりにして格納するための型を言います。次は2行目です。for文はforの右側にある部分のinの前に書かれた変数にinの後に書かれたシーケンス型(この場合はリスト)の値を順番に取り出して処理します。この例の場合は取り出した文字列とlen()関数によって得た文字列の文字数を続けて出力しています。

公式チュートリアルのこの後の説明はちょっと難しいですし、とりあえずスキップしても大丈夫です。少し慣れてきてからもう一度読み返しましょう。

 

さて、せっかくなので他のシーケンス型でもやってみましょう。実は文字列自体もシーケンス型のひとつです。上の例をちょっと改造して説明してみます。

words = ['cat', 'window']
for w in words:
... 	for c in w:
... 		print(c)
c
a
t
w
i
n
d
o
w

今度はどうなったでしょう、2行目のfor文は前の例と全く同じです。次の行はインデントを入れてもう一つfor文を作っています。このようにfor文は入れ子構造にすることができます。ネストとも言われます。さて、2つめのfor文はcという変数にwの中身を取り出して処理しています。wの中身はwordsから取り出した文字列でした。そして文字列もシーケンス型なので、今度はwの中身をcに一文字ずつ取り出してprint()関数で出力しているのです。

 

他にもシーケンス型としてfor分で取り出せるものがありますが、それは追々やっていきましょう。

 

次回はfor文とも関わりが深いrange()関数です。