JavaScriptを有効にしてください

Pythonのfor文:初心者向けガイド

 · 

for文はコード内で繰り返し処理を行う際に非常に重要な構文です。
この記事では、Pythonのfor文の基本的な使い方と、その応用例を初心者にも分かりやすく解説します。

for文の基本

Pythonのfor文は、シーケンス(リスト、タプル、文字列など)を反復処理するために使用されます。
基本的な構文は以下の通りです:

1
2
for 変数 in シーケンス:
    # 繰り返し実行されるブロック

ここで、変数はシーケンスの各要素に順番に代入され、その変数を使用して繰り返しブロック内の処理が実行されます。

例:リストの要素を反復処理する

1
2
3
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

この例では、fruitsリストの各要素がfruit変数に代入され、その値がprint関数によって出力されます。

for文とrange関数

range関数と組み合わせることで、指定した回数だけ繰り返し処理を行うことができます。range関数は、数値のシーケンスを生成します。

例:0から4までの数値を出力する

1
2
for i in range(5):
    print(i)

この例では、range(5)によって生成された0から4までの数値がi変数に代入され、その値が出力されます。

for文と辞書

Pythonの辞書をfor文で反復処理する場合、キー、値、またはその両方を取得することができます。

例:辞書のキーと値を出力する

1
2
3
person = {"name": "John", "age": 30, "country": "USA"}
for key, value in person.items():
    print(f"{key}: {value}")

この例では、person辞書の各アイテムに対して、キーと値がkeyvalue変数に代入され、それらが出力されます。

for文のネスト

for文はネスト(入れ子)することができ、これにより複数のシーケンスを同時に反復処理することが可能になります。

例:2次元リストの要素を出力する

1
2
3
4
5
6
7
8
9
matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

for row in matrix:
    for item in row:
        print(item)

この例では、matrixリストの各行がrow変数に代入され、その後、各行の要素がitem変数に代入されて出力されます。

breakステートメント

Pythonのbreakステートメントは、ループ(forループやwhileループなど)の実行中に、ループを途中で終了させるために使用されます。特定の条件が満たされた時点でこれ以上ループを続ける必要がない場合にbreakを使ってループから抜け出します。

forループを使用したbreakの基本的な使い方を以下の例で解説します。

例:特定の要素を見つけたらループを終了

リスト内の要素をループで検索し、特定の要素を見つけたらその時点でループを終了する例です。

1
2
3
4
5
6
fruits = ["apple", "banana", "cherry", "orange"]
for fruit in fruits:
    print(fruit)
    if fruit == "cherry":
        print("Cherry was found!")
        break  # cherryを見つけたらループを終了

このコードでは、リストfruits内の要素を順に出力しています。ループ内でifステートメントを使用して各要素が"cherry"かどうかを確認し、“cherry"が見つかった場合にはメッセージを出力してbreakステートメントによりループから抜け出します。その結果、“cherry"以降の要素は処理されずにループが終了します。

breakを使うことで、不必要な処理を省略し、プログラムの効率を高めることができます。例えば、検索や特定の条件が満たされた時点での早期終了など、さまざまなシナリオで有用です。

その他のfor文の例

Pythonのfor文は非常に汎用性が高く、様々なシナリオで利用できます。以下に、実用的な例を10個紹介します。

例1: リスト内の数値の合計

リスト内の全ての数値を合計する簡単な例です。

1
2
3
4
5
numbers = [1, 2, 3, 4, 5]
total = 0
for number in numbers:
    total += number
print("合計:", total)

例2: 文字列リストからの検索

特定の文字列を含む要素をリストから検索し、見つかった最初の要素を出力します。

1
2
3
4
5
6
fruits = ["apple", "banana", "cherry", "date"]
search = "cherry"
for fruit in fruits:
    if fruit == search:
        print(f"{search}が見つかりました!")
        break

例3: 辞書のキーと値の反復処理

辞書の各エントリーに対してキーと値を出力します。

1
2
3
person = {"名前": "山田太郎", "年齢": 30, "職業": "プログラマー"}
for key, value in person.items():
    print(f"{key}: {value}")

例4: 二次元リストの処理

二次元リスト(リストのリスト)を反復処理し、各要素を出力します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

for row in matrix:
    for item in row:
        print(item, end=' ')
    print()  # 新しい行で出力

例5: ファイルの行の反復処理

テキストファイルを開き、各行を反復処理します。この例では、ファイルexample.txtの各行を読み込み、出力します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# ファイルを作成し、テキストを書き込む
with open('example.txt', 'w') as file:
    file.write("Hello, World!\n")
    file.write("This is an example file.\n")
    file.write("Python is fun.\n")

print("ファイルが作成されました。")

with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())  # strip()で末尾の改行文字を削除

例6: リスト内包表記

リスト内包表記を使用して、特定の条件に一致する要素だけを新しいリストに含めます。この例では、偶数のみを抽出します。

1
2
3
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [number for number in numbers if number % 2 == 0]
print(even_numbers)

リスト内砲表記については下記記事で詳しく解説しています。
Pythonのリスト内包表記:初心者向けガイド

例7: インデックスと共に反復処理

enumerate関数を使用して、リストの要素とそのインデックスを同時に取得します。

1
2
3
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

Pythonのenumerate関数は、イテラブル(リスト、タプル、文字列などを反復処理できるオブジェクト)を引数として受け取り、それを反復処理する際に、各要素にインデックス(位置)を付与して、インデックスと要素のペアを返します。これにより、イテラブルをループ処理する際に、要素の値だけでなく、その位置(インデックス)も同時に取得することができるようになります。

基本的な使い方は以下の通りです:

1
2
for index, value in enumerate(iterable, start=0):
    print(index, value)
  • iterableは反復処理されるイテラブルオブジェクトです。
  • startはインデックスの開始番号で、省略可能です。省略した場合のデフォルト値は0ですが、必要に応じて他の値から開始させることができます。

enumerate関数を使用することで、ループ内での要素のインデックスを手動で管理する必要がなくなり、コードがより簡潔で読みやすくなります。また、インデックスを使用して、反復処理中の要素に基づいて何らかの操作を行いたい場合にも便利です。

例8: 複数のリストを同時に反復処理

zip関数を使用して、複数のリストの要素を同時に反復処理します。この例では、名前と年齢のリストを同時に処理します。

1
2
3
4
names = ["John", "Jane", "Doe"]
ages = [23, 34, 45]
for name, age in zip(names, ages):
    print(f"{name}{age}歳です。")

例9: 2次元リストのフラット化

2次元リストをフラット化(1次元リストに変換)します。

1
2
3
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [item for row in matrix for item in row]
print(flattened)

例10: 辞書のキーで反復処理

辞書のキーを反復処理し、それに対応する値を取得します。この方法は、辞書のキーに特に注目したい場合に便利です。

1
2
3
4
capitals = {"日本": "東京", "アメリカ": "ワシントンD.C.", "フランス": "パリ"}
for country in capitals:
    capital = capitals[country]
    print(f"{country}の首都は{capital}です。")

これらの例は、for文の応用範囲が非常に広いことを示しています。リスト内包表記から、複数のシーケンスの同時処理、さらには辞書やファイルの扱いまで、for文はPythonプログラミングにおける強力なツールです。これらのテクニックをマスターすることで、より効率的で読みやすいコードを書くことが可能になります。

まとめ

Pythonのfor文は、シーケンスの要素を反復処理するための強力なツールです。
リスト、タプル、文字列、辞書など、さまざまなデータ構造に対して繰り返し処理を行うことができます。
この記事を通じて、for文の基本的な使い方と応用例を理解し、Pythonプログラミングのスキルをさらに向上させることができるでしょう。
繰り返し処理はプログラミングにおいて非常に一般的なタスクであり、for文を効果的に使用することで、より効率的で読みやすいコードを書くことが可能になります。


Pythonを本格的に勉強したい方は、初心者に優しく分かりやすいPyQで学ぶのが最適です。
価格もリーズナブルなのでオススメです。



スポンサーリンク

共有

もふもふ
著者
もふもふ
プログラマ。汎用系→ゲームエンジニア→Webエンジニア→QAエンジニア