YutaKaのPython教室

Python の文法やライブラリ、API、環境構築について画像・動画・ソースコード付きで徹底解説!

python for文の使い方|Python超入門【第17回】

Pythonのfor文の基本について解説しています。

for文はプログラムの流れを制御する制御構文と呼ばれるものの一つです。

  • 一部の変数を更新しながら、
  • 同様の処理を繰り返す

繰り返し処理(ループ処理)を行うことができます。

 

【解説動画】for文の基本


Python超入門シリーズ|for文の基本(リストと辞書型の例)第17回

pythonのfor文の使い方入門

まずは、繰り返し処理のイメージ、for文の処理フローについて、図解していきます。

for文のイメージ

まずは本が入った段ボール整理することを例に、for文のイメージをお伝えします

段ボールの中身を整理するには、次の手順を踏むとします。

  1. 段ボールを1つ開けて中身を出す
  2. 中の本を整理する
  3. 全部の箱の処理が終わるまで、1., 2.を繰り返す

実はpythonのfor文の流れもこれと同じようなことをしています。

段ボール整理の例をfor文風に書いてみると、こうなります。

段ボールをあけて、1つずつ処理していますね。

for文の処理フロー

pythonのfor文の処理のおおまかな流れは次の通りです。

  1. リストやタプルなどのシーケンス型から要素を1つ取り出す
  2. 特定の処理をする
  3. 要素が空になるまで、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()メソッドを使用して、文字列を大文字にしています。

基本的な書き方|辞書型

辞書型は、keyvalueの組み合わせから構成されます。

そのため、for文を使用する際には、keyのみ、valueのみまたはその両方を取り出したいという状況がそれぞれあります。

辞書型のメソッドを使用すると、forループで取り出す要素を指定することができます。

  • 辞書(メソッドなし)keyのみ
  • 辞書.keys() ⇒keyのみ
  • 辞書.values()valueのみ
  • 辞書.items() keyvalueの組み合わせ

それぞれの使い方について、以下でサンプルコード付きで見ていきましょう。

最も基本的な書き方|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

辞書型のメソッドを利用するとkeyvalueまたはその両方を明示的に指定して取り出すことも可能です。

  • 辞書.keys() ⇒keyのみ
  • 辞書.values()valueのみ
  • 辞書.items()keyvalueの組み合わせ

それぞれのメソッドの使い方について、以下でサンプルコード付きで見ていきましょう。

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ループでkeyvalueの組み合わせが取り出されます。

keyvalueの組み合わせは、

  • 制御変数にタプルとして代入されて
  • 要素[0]key
  • 要素[1]value

となります。

scores = {"English":90, "Math":100}
 
for score in scores.items():
  print(score[0], score[1])
 
# 'English', 90
# 'Math', 100

制御変数を2つ書くことで、keyvalueを別々の変数で受け取ることもできます。

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に関する情報を発信しています。

気楽にツイートしているので、気軽にフォローしてください!