Pythonのfor文
の基本について解説しています。
for文
はプログラムの流れを制御する制御構文と呼ばれるものの一つです。
- 一部の変数を更新しながら、
- 同様の処理を繰り返す
繰り返し処理(ループ処理)を行うことができます。
【解説動画】for文の基本
Python超入門シリーズ|for文の基本(リストと辞書型の例)第17回
pythonのfor文の使い方入門
まずは、繰り返し処理のイメージ、for文
の処理フローについて、図解していきます。
for文のイメージ
まずは本が入った段ボール整理することを例に、for文
のイメージをお伝えします。
段ボールの中身を整理するには、次の手順を踏むとします。
- 段ボールを1つ開けて中身を出す
- 中の本を整理する
- 全部の箱の処理が終わるまで、1., 2.を繰り返す
実はpythonのfor文
の流れもこれと同じようなことをしています。
段ボール整理の例をfor文
風に書いてみると、こうなります。
段ボールをあけて、1つずつ処理していますね。
for文の処理フロー
pythonのfor文の処理のおおまかな流れは次の通りです。
- リストやタプルなどのシーケンス型から要素を1つ取り出す
- 特定の処理をする
- 要素が空になるまで、1., 2.を繰り返す
図にすると下図のようなイメージになります。段ボールの整理と似ていますね。
より厳密には1. の要素を1つ取り出すところで、イテレータ
という機能を使用していますが、初めのうちはそこまで気にしなくて良いと思います。
また、pythonのfor文
は他の言語のfor文
とニュアンス少し異なります。
- 他の言語|
制御変数
を1ずつ増やしながら繰り返す場合が多い - python |新しい変数を取り出しながら繰り返し処理をする
といったニュアンスの違いがあります。
基本的な書き方|リストやタプル
リストを例に基本的なfor文
の書き方を紹介します(タプルも同様です)。
for文
では
制御変数
というものを用意- 各ループでリストの要素を
制御変数
に取り出し - 特定の処理の実施
を行います。
次のような書き方が基本となります。
for 制御変数 in リスト:
インデントを付けて処理内容
と書きます。
fruits_list = ["apple", "orange", "grape"]
for fruit in fruits_list:
print(fruit)
# apple
# orange
# grape
制御変数
はfor文
内で普通の変数と同じように、取り扱うことができます。
例えば制御変数
のメソッドを使用することもできます。
fluits_list = ["apple", "orange", "grape"]
for fluit in fluits_list:
print(fluit.upper())
# APPLE
# ORANGE
# GRAPE
ここでは、文字列のupper()
メソッドを使用して、文字列を大文字にしています。
基本的な書き方|辞書型
辞書型は、key
とvalue
の組み合わせから構成されます。
そのため、for文
を使用する際には、key
のみ、value
のみまたはその両方を取り出したいという状況がそれぞれあります。
辞書型のメソッドを使用すると、forループで取り出す要素を指定することができます。
辞書(メソッドなし)
⇒key
のみ辞書.keys()
⇒key
のみ辞書.values()
⇒value
のみ辞書.items()
⇒key
とvalue
の組み合わせ
それぞれの使い方について、以下でサンプルコード付きで見ていきましょう。
最も基本的な書き方|for 制御変数 in 辞書
for文
で辞書型を使用する際も、
制御変数
を用意- 各ループで辞書の要素を
制御変数
に取り出し - 特定の処理の実施
を行います。
次のような書き方が基本となります。
for 制御変数 in 辞書:
インデントを付けて処理内容
と書きます。
制御変数には要素のkey
のみが取り出される点に注意しましょう。
scores = {"English":90, "Math":100}
for subject in scores:
print(subject)
# English
# Math
制御変数に取り出したkey
を使って、value
にアクセスすることも可能です。
scores = {"English":90, "Math":100}
for subject in scores:
print(subject, scores[subject])
# English 90
# Math 100
辞書型のメソッドを利用するとkey
、value
またはその両方を明示的に指定して取り出すことも可能です。
辞書.keys()
⇒key
のみ辞書.values()
⇒value
のみ辞書.items()
⇒key
とvalue
の組み合わせ
それぞれのメソッドの使い方について、以下でサンプルコード付きで見ていきましょう。
keyのみ取り出す|辞書.keys()
keys()
メソッドを使用すると、各forループでkey
のみが取り出されます。
scores = {"English":90, "Math":100}
for subject in scores.keys():
print(subject)
# English
# Math
辞書型ではそのままfor文
を回してもkey
が取り出されるので、keys()
メソッドは使用する意味がないように思えますが…。
keys()
メソッドを書いた方が、何を取り出しているのかわかりやすくなりますね。
valueのみ取り出す|辞書.values()
values()
メソッドを使用すると、各forループでvalue
のみが取り出されます。
scores = {"English":90, "Math":100}
for score in scores.values():
print(score)
# 90
# 100
keyとvalueの両方取り出す|辞書.items()
items()
メソッドを使用すると、各forループでkey
とvalue
の組み合わせが取り出されます。
key
とvalue
の組み合わせは、
制御変数
にタプルとして代入されて要素[0]
⇒key
要素[1]
⇒value
となります。
scores = {"English":90, "Math":100}
for score in scores.items():
print(score[0], score[1])
# 'English', 90
# 'Math', 100
制御変数を2つ書くことで、key
とvalue
を別々の変数で受け取ることもできます。
scores = {"English":90, "Math":100}
for subject, score in scores.items():
print(f"Your score of {subject} is {score}")
Your score of English is 90
Your score of Math is 100
ここでは、自然な流れでタプルのアンパッキングが行われています。
また、文字列の連結にはf-string
を使用しています。
おわりに
for文
を使用することで、繰り返し処理が記述できるようになります。
pythonのfor文
では、リストやタプル、辞書型の要素を順番に取り出します
そのため、リストやタプル、辞書型のメソッドと組み合わせることも多いです。
他にも、for文の中で、条件を満たした場合は、特殊な処理をするということも多く、条件分岐のif文
との組み合わせも必然的に多いです。
Python超入門シリーズでは、pythonの基本を解説動画、図解付きで初心者の方向けに解説しています。
解説動画は楽しみながらpythonを学べる動画を目指しています⇒動画チャンネル
Twitter@YutaKaでは、ほぼ毎日pythonに関する情報を発信しています。
気楽にツイートしているので、気軽にフォローしてください!