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.