Pythonのfor文は、指定された操作をリストや文字列などのデータの各要素に対して繰り返し実行するための構文です。

for文をうまく利用することで、一連の同じ操作を効率よく行うことができます。
numbers = [1, 2, 3, 4, 5] # 数字のリストを作成
for num in numbers: # リストnumbersの各要素に対して以下の処理を行う
print(num) # numを表示
# 実行結果:
# 1
# 2
# 3
# 4
# 5
このページではPython初心者の方向けに、for文の使い方を1からわかりやすくサンプルコード付きで解説します。
Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください
前提:繰り返し処理とは?
「繰り返し実行」とは、特定のプログラムのコードブロック(つまり、命令の集まり)を何度も実行することを指します。この概念はプログラミングの基本的な要素の1つで、特定のタスクを指定した回数だけ、または特定の条件が満たされるまで実行するために使用されます。

繰り返し実行は主に2つの形式で現れます:「カウント制御ループ」と「条件制御ループ」です。
カウント制御ループ(for文で実現)
カウント制御ループは「指定された回数だけ何かを行う」というタスクに対応します。
例えば、「5回"こんにちは"と言ってください」と言われた場合、それを実行するには、"こんにちは"と言う行為を5回繰り返す必要があります。

Pythonのfor文を使ったプログラムでは、以下のように表現します。
for i in range(5):
print("こんにちは")
# 実行結果:
# こんにちは
# こんにちは
# こんにちは
# こんにちは
# こんにちは
参考 print関数の使い方
このコードでは、"こんにちは"という文字列を5回表示します。range(5)は0から4までの数値を生成するので、for文はこの5回分の数字(つまり5回)を使ってループ(繰り返し)を作ります。
条件制御ループ(while文で実現)
条件制御ループは、特定の条件が満たされるまで何かを行うというタスクに対応します。
例えば、「お腹が空くまでリンゴを食べ続けてください」と言われた場合、お腹が空くという条件が満たされるまでリンゴを食べ続ける必要があります。

Pythonのwhile文を使ったプログラムでは、以下のように表現します。
stomach = 0 # お腹の状態を0とする(0は空腹を、10は満腹を表すとします)
while stomach < 10: # お腹がまだ満腹でない場合
print("リンゴを食べる")
stomach += 1 # リンゴを1個食べるとお腹の状態を1だけ増やす
参考 while文の使い方 / 代入演算子(+=)
このコードでは、お腹が満腹になるまで(つまりstomachが10になるまで)"リンゴを食べる"と表示し続けます。

これらのループは、特定のタスクを指定した回数だけ実行するか、特定の条件が満たされるまで続けるかといった繰り返しの操作をコード化するための非常に重要なツールです。
前提をしっかり押さえたところで、カウント制御ループであるfor文の使い方について詳しく見ていきましょう。
Python:for文
Pythonのfor文は、指定された操作をリストや文字列などのデータの各要素に対して繰り返し実行するための構文です。

構文ルールは以下の通り。
for 変数 in シーケンス:
# シーケンスの各要素(変数)を使った処理
ここで「シーケンス」はリストや文字列などの反復可能なデータを指し、「変数」はそのシーケンスの各要素を一つずつ受け取るためのものです。

文字だけでは分からない部分もあると思うので、早速サンプルコードを見ていきましょう。
numbers = [1, 2, 3, 4, 5] # 数字のリストを作成
for num in numbers: # リストnumbersの各要素に対して以下の処理を行う
print(num) # numを表示
# 実行結果:
# 1
# 2
# 3
# 4
# 5
このプログラムは1から5までの各数字を順番に表示します。リストnumbersの各要素が一つずつnumに代入され、そのnumを使ってprint(num)という処理が行われます。結果、1~5の数字が出力されるという仕組み。

わかりやすく言うと「for文は指定したオブジェクトから要素を順番に取得し、その要素の数だけ処理を繰り返す」処理を行うということ。
リストだけでなく、他の集合・辞書・タプル、さらには文字列に対してもfor文を利用することが可能です。
サンプル 文字列に対するforループ
文字列は文字のシーケンスとみなすことができます。したがって、forループを使って文字列の各文字を順に処理することができます。
word = "Hello, World!"
for letter in word:
print(letter)
# 実行結果:
# H
# e
# l
# l
# o
# ,
#
# W
# o
# r
# l
# d
# !
サンプル 辞書に対するforループ
辞書はキーと値のペアの集合です。forループを使うと、辞書のキーまたは値、または両方に対して処理を行うことができます。
my_dict = {"apple": "red", "banana": "yellow", "grape": "purple"}
for key in my_dict:
print(key)
# 実行結果:
# apple
# banana
# grape
for value in my_dict.values():
print(value)
# 実行結果:
# red
# yellow
# purple
for key, value in my_dict.items():
print(f"The {key} is {value}")
# 実行結果:
# The apple is red
# The banana is yellow
# The grape is purple
サンプル タプルに対するforループ
タプルもリストと同じように要素のシーケンスですが、タプルの要素は変更できません。タプルに対するforループの使い方はリストと同じです。
my_tuple = ("apple", "banana", "grape")
for item in my_tuple:
print(item)
# 実行結果:
# apple
# banana
# grape
サンプル セットに対するforループ
セット(集合)は重複する要素を含まないアイテムの集合です。セットに対するforループの使い方もリストやタプルと同じです。
my_set = {"apple", "banana", "grape", "apple"}
for item in my_set:
print(item)
# 実行結果(セットの順序は保証されない):
# apple
# banana
# grape
以上のように、forループはPythonの様々なデータ構造に対して利用することができ、それぞれの要素に対して同じ操作を繰り返すために非常に便利です。

リストやタプルといった基本知識に不安がある方はこの機会に以下のページで復習しておきましょう!
Python:for文の注意点
for文は使いこなせると便利な構文でもありますが、いくつか注意点も存在します。

最後に、for文を利用する際の注意点についてご説明します。
Python:for文 注意点①:繰り返し処理中のシーケンスの変更
forループ中にシーケンス(リストやタプル、文字列など)を変更すると、結果が予測しきれなくなる可能性があります。これはループが要素をどの順番で処理するかが変わってしまうためです。
繰り返し処理の中でシーケンスを変更する必要がある場合は、通常、シーケンスのコピーを作ってからループを行います。
# NGな例 - 繰り返し処理中にシーケンスを変更する
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 3:
numbers.remove(num)
print(numbers) # 結果は予期しないものになるかもしれません
# OKな例 - 繰り返し処理のためにシーケンスのコピーを作成する
numbers = [1, 2, 3, 4, 5]
for num in numbers.copy():
if num == 3:
numbers.remove(num)
print(numbers) # 予期した結果が得られます
Python:for文 注意点②:変数のスコープ
forループ内で宣言された変数は、ループの外でも使用することが可能。しかし、一般的にはループの外でループ内部の変数を使用するのは避けた方が良いです。

ループ内部で生成された変数の値はループが終了した時点での最後の値となるため、プログラムが複雑になると予期しない結果を生じる可能性があります。
for i in range(5):
temp = i * 2
print(temp) # この時点でtempは最後のループの値、つまり8になる
Python:for文 注意点③:breakとcontinueの使用
breakはループを完全に終了させ、continueは現在のループをスキップして次のループに進むための命令です。
これらは制御フローをより細かく制御するのに便利ですが、使いすぎるとプログラムが複雑になり、読みにくくなる可能性があるため、注意して使用する必要があります。
for i in range(5):
if i == 2:
continue # iが2のときのみ処理をスキップ
print(i)
# 実行結果:
# 0
# 1
# 3
# 4
Python:for文 注意点④:無限ループの回避
理論的にはforループでは無限ループは発生しませんが、例えばリスト内包表記でリストを生成しながらそのリストをループするような場合などは注意が必要です。
無限ループが発生するとプログラムは止まらず、コンピュータのリソースを過剰に消費する可能性があります。

これらを意識しながらforループを使用すると、より効果的かつ安全にコードを書くことができます。
Python:for文のまとめ

始めてPythonを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。
Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!
読者料典 Python入門:学習カリキュラム ←こちらから!

