Pythonの基礎 - 反復処理(for文)
概要
ここでは、Pythonにおいて、条件が成立する時に反復処理(イテレーション)をするfor文とwhile文を記載する。
反復処理が可能(イテラブル)なオブジェクト(文字列、リスト、タプル、辞書等)を使用して反復処理を行うにはfor文を使用する。
for-in文で反復処理をする
Pythonでfor文を使ってループ処理のコードを書くには、forの後ろに繰り返し変数を記述する。
続けて、inキーワードを記述した後にリストなどのシーケンスを記述して、末尾にコロンを置く。
 for 繰り返し変数 in シーケンス:
     実行コード
以下の例では、リスト変数から各要素を取得している。
 lang = ["Python","PHP","Swift"]
 
 for i in lang:
     print(i)
 
 # 出力
 Python
 PHP
 Swift
次に、文字列をシーケンスとして使用する。
以下の例では、Pythonという文字列を、繰り返し変数をsとして、1文字ずつ取得している。
 for s in "Python":
     print(s)
 
 # 出力
 P
 y
 t
 h
 o
 n
break文でfor文を抜ける
for文でも、while文と同様にbreak文を使用して反復処理を抜けることができる。
以下の例では、取得した文字がhの時にfor文から抜ける処理をしている。
 for s in "Python":
     if s == "h":
         break
     print(s)
 
 # 出力
 P
 y
 t
continue文で処理をスキップする
continue文を使用して、処理をスキップして再度反復処理の先頭に戻ることができる。
以下の例では、指定した文字hの場合のみ処理がスキップしている。
 for s in "Python":
     if s == "h":
         continue
     print(s)
 
 # 出力
 P
 y
 t
 o
 n
for文のelse文とbreak文
for文もwhile文と同様に、処理が終わったら何か別の処理をする場合にelse文と組み合わせることができる。
以下の例のように、else文を最後に付け加えるだけである。
 lang = ["Python","PHP","Swift"]
 
 for i in lang:
     print(i)
 else:
     print("Done!")
 
 # 出力
 Python
 PHP
 Swift
 Done!
また、以下の例では、break文と組み合わせている。
break文で反復処理を抜けると、else文の処理は実行されない。
このような処理は、break文が実行されなかった場合は、else文でチェックするような時に使用する。
 lang = ["Python","PHP","Swift"]
 
 for i in lang:
     if i == "PHP":
         break
     print(i)
 else:
     print("Done!")
 
 # 出力
 Python
for文と辞書(values関数とitems関数)
辞書型変数をfor文で処理する場合を考える。
次のような辞書型変数を用意して、for文で処理する。
print関数で出力されているものは、辞書のキーの部分である。このように、辞書型変数をfor文で処理するとキーが処理される。
 foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"}
 
 for food in foods:
     print(food)
 
 # 出力
 breakfast
 lunch
 dinner
上記のサンプルコードは、次のように辞書型変数のkeys関数を使用した処理と同じである。
for文で辞書をそのまま使用してもkeys関数を使用しても、結果はどちらもキーが取得されることになる。
 foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"}
 
 for food in foods.keys():
     print(food)
 
 # 出力
 breakfast
 lunch
 dinner
for文と辞書のvalues関数
辞書の値を反復処理で取得する場合は、values関数を使用する。
以下の例では、values関数を使用して辞書の値を取得している。
 foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"}
 
 for food in foods.values():
     print(food)
 
 # 出力
 miso soup
 sandwich
 steak
for文と辞書のitems関数
辞書のキーと値をセットでタプル型に変換して反復処理する場合は、items()関数を使用する。
 foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"}
 
 for food in foods.items():
     print(food)
 
 # 出力
 ('breakfast', 'miso soup')
 ('lunch', 'sandwich')
 ('dinner', 'steak')
また、以下の例では、このタプルをそれぞれの変数にキーと値を代入する処理を行っている。
ピリオドと改行コードを文末に出力するために、print関数のendオプションを使用している。
それぞれキーと値が対応した位置に出力されている。
 foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"}
 
 for food, menu in foods.items():
     print("Yesterday, I had", menu, "for", food, end=".\n")
 
 # 出力
 Yesterday, I had miso soup for breakfast.
 Yesterday, I had sandwich for lunch.
 Yesterday, I had steak for dinner.