Pythonではfor文によるループ処理をする方法が複数あります。本記事ではその中の主な方法を解説します。
for文の基本
Pythonのfor文は、シーケンス(リスト、タプル、文字列など)の各要素に対して繰り返し処理を行うための構文です。他の言語と違い、カウンタ変数が自動的に増加するような仕組みはなく、シーケンスの要素を直接取り出す形になります。
構文
基本的なfor文の構文は以下のようになります。シーケンスの各要素が順番に変数に代入され、処理が繰り返されます。
for 変数 in シーケンス:
# 処理
例
フルーツのリストを使った基本的なループの例です。リストの各要素が順番に出力されます。
fruits = ["りんご", "バナナ", "オレンジ"]
for fruit in fruits:
print(fruit)
# 出力例:
# りんご
# バナナ
# オレンジ
range
数値の範囲に対してループを行いたい場合は、range関数を使います。range関数は指定した範囲の数値シーケンスを生成します。
構文
range関数の構文はいくつかのバリエーションがあります。引数によって開始値、終了値、ステップ値を指定できます。
range(stop)
range(start, stop)
range(start, stop, step)
例
range関数を使ったループの例です。それぞれ異なる引数で数値範囲を生成しています。
# 0から4までの数値でループ
for i in range(5):
print(i)
# 出力例:
# 0
# 1
# 2
# 3
# 4
# 2から6までの数値でループ
for i in range(2, 7):
print(i)
# 出力例:
# 2
# 3
# 4
# 5
# 6
# 1から10まで2ステップずつループ
for i in range(1, 11, 2):
print(i)
# 出力例:
# 1
# 3
# 5
# 7
# 9
配列
Pythonではリスト(配列)の要素に対して直接ループ処理を行えます。
構文
リストに対するループの構文は非常にシンプルで、各要素に直接アクセスできます。
for 要素 in リスト:
# 処理
例
数値リストの合計を計算する例です。ループを使って各要素を順番に加算しています。
numbers = [1, 2, 3, 4, 5]
sum = 0
for num in numbers:
sum += num
print(f"合計: {sum}")
# 出力例:
# 合計: 15
辞書
Pythonの辞書(dict)に対しても様々な方法でループを行えます。
keys
構文
辞書のキーだけに対してループを行う方法です。keys()メソッドを使うと、辞書のすべてのキーを取得できます。
for キー in 辞書.keys():
# 処理
例
辞書のキーだけを取り出して処理する例です。各キーが順番に出力されます。
student = {"name": "田中", "age": 20, "grade": "A"}
for key in student.keys():
print(f"キー: {key}")
# 出力例:
# キー: name
# キー: age
# キー: grade
values
構文
辞書の値だけに対してループを行う方法です。values()メソッドを使うと、辞書のすべての値を取得できます。
for 値 in 辞書.values():
# 処理
例
辞書の値だけを取り出して処理する例です。キーは取得せず、値のみが出力されます。
student = {"name": "田中", "age": 20, "grade": "A"}
for value in student.values():
print(f"値: {value}")
# 出力例:
# 値: 田中
# 値: 20
# 値: A
items
構文
辞書のキーと値のペアを同時に取得してループする方法です。items()メソッドは(キー, 値)のタプルを返します。
for キー, 値 in 辞書.items():
# 処理
例
辞書のキーと値を同時に取得して処理する例です。両方の情報を使って出力しています。
student = {"name": "田中", "age": 20, "grade": "A"}
for key, value in student.items():
print(f"{key}: {value}")
# 出力例:
# name: 田中
# age: 20
# grade: A
enumerate
インデックスと要素を同時に取得したい場合は、enumerate関数を使います。
構文
enumerate関数は、シーケンスの各要素にインデックス番号を付けてタプルとして返します。
for インデックス, 要素 in enumerate(シーケンス):
# 処理
例
リストの各要素とそのインデックスを同時に取得する例です。位置情報付きで出力できます。
fruits = ["りんご", "バナナ", "オレンジ"]
for index, fruit in enumerate(fruits):
print(f"{index}番目: {fruit}")
# 出力例:
# 0番目: りんご
# 1番目: バナナ
# 2番目: オレンジ
zip
複数のシーケンスを同時にループする場合は、zip関数を使います。
構文
zip関数は複数のシーケンスから対応する要素をまとめたタプルのイテレータを返します。
for 要素1, 要素2, ... in zip(シーケンス1, シーケンス2, ...):
# 処理
例
二つのリストを同時にループして対応する要素を処理する例です。名前と点数を関連付けて出力しています。
names = ["田中", "佐藤", "鈴木"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
print(f"{name}さんの点数: {score}")
# 出力例:
# 田中さんの点数: 85
# 佐藤さんの点数: 92
# 鈴木さんの点数: 78
まとめ
Pythonのfor文は非常に柔軟で、様々なデータ構造に対して直感的なループ処理が可能です。特に辞書のループ処理やenumerate、zipのような便利な関数は、コードを簡潔にし、可読性を高めるのに役立ちます。