Pythonで繰り返し処理を行う際に欠かせないのが「for文」です。
リストや辞書、文字列などのデータ構造を簡潔にループできるため、Python初心者はもちろん、中級者にとっても日常的に使う機能の一つです。
本記事では、Pythonにおけるfor文の基本構文から、よくある使い方、応用テクニック、注意点までをわかりやすく解説します。
これからPythonを学ぶ方はもちろん、すでに書いているけれどfor文に自信がないという方にも役立つ内容です。
Pythonのfor文は、イテラブルなデータ構造(リスト、タプル、文字列、辞書など)に対して、一つひとつの要素を順に取り出して処理を行う構文です。
基本的な構文は以下の通りです。
for 変数 in イテラブル:
実行する処理
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(fruit)
このコードを実行すると、リストの要素が1行ずつ出力されます。
apple
banana
orange
Pythonでは、特定の回数だけ処理を繰り返したい場合にrange()
関数を使います。
for i in range(5):
print(i)
出力:
0
1
2
3
4
for i in range(1, 10, 2):
print(i)
出力:
1
3
5
7
9
文字列もイテラブルなオブジェクトなので、for文で1文字ずつ取り出すことが可能です。
text = "hello"
for char in text:
print(char)
出力:
h
e
l
l
o
辞書はキーと値のペアを持つデータ構造です。for文では以下のように処理できます。
person = {"name": "John", "age": 30}
for key in person:
print(key)
for key, value in person.items():
print(f"{key} = {value}")
出力:
name = John
age = 30
for文は入れ子にすることもできます。2次元リストなどを扱うときに便利です。
matrix = [[1, 2], [3, 4], [5, 6]]
for row in matrix:
for item in row:
print(item)
出力:
1
2
3
4
5
6
インデックスを同時に取得したいときはenumerate()
を使います。
colors = ["red", "green", "blue"]
for index, color in enumerate(colors):
print(f"{index}: {color}")
出力:
0: red
1: green
2: blue
複数のリストを並行して処理したいときに便利なのがzip()
関数です。
names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
print(f"{name} scored {score}")
出力:
Alice scored 85
Bob scored 92
Charlie scored 78
Pythonのfor文にはelse
節を付けることができます。これはfor文が途中でbreak
されずに最後まで処理されたときに実行されます。
for i in range(5):
if i == 3:
break
else:
print("ループが最後まで実行されました")
この場合、3でループが終了するため、else
節は実行されません。
Pythonでは、for文を使って一行でリストを作る「リスト内包表記」が可能です。
squares = [i**2 for i in range(5)]
print(squares)
出力:
[0, 1, 4, 9, 16]
リストのフィルタリングにも使えます。
even = [i for i in range(10) if i % 2 == 0]
print(even)
出力:
csharpコピーする編集する[0, 2, 4, 6, 8]
Pythonではインデントが重要です。for文の中の処理は必ず字下げが必要です。
# NG例
for i in range(5):
print(i) # インデントがないためエラー
辞書をループする際にitems()
を使わず、キーしか取得できないことに気づかずバグになることがあります。
# NG例
for key in person:
print(key, person.value) # 'value'は辞書のメソッドではない
Pythonのfor文は非常に柔軟で、初心者でもすぐに使いこなせる一方で、熟練者にとっても便利な機能が豊富です。
繰り返し処理をスマートに書けるようになると、Pythonでのコーディングがぐっと楽しく、効率的になります。
まずは小さな例題から試してみて、徐々にfor文の使い方に慣れていきましょう。