Pythonの基礎 - 反復処理(for文)

提供:MochiuWiki : SUSE, EC, PCB
2020年4月15日 (水) 22:51時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == ここでは、Pythonにおいて、条件が成立する時に反復処理(イテレーション)をするfor文とwhile文を記載する。<br> 反復処…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

ここでは、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.