【2025】Pythonのfor構文を徹底解説!range・enumerate・zipの活用法

Pythonのfor文は、リストやタプル、文字列などのデータを繰り返し処理するための基本的な構文です。そのシンプルさと柔軟性から、初心者から上級者まで幅広く活用されています。

この記事では、Pythonのfor文の基本構文と、range関数、enumerate関数、zip関数を活用する具体的な方法をご紹介します。

この記事を読むことで、Pythonのfor文を使った繰り返し処理の基礎から応用までを理解し、実践的なスキルを身につけることができるでしょう。初心者の方でも無理なく学べる内容となっていますので、ぜひご活用ください。

Pythonのfor文の基本構文

Pythonのfor文は、リストやタプル、文字列などの「イテラブルオブジェクト」を順番に処理する際に非常に便利な構文です。プログラミング初心者にとっても理解しやすい仕組みを持ち、コードの繰り返し処理を簡潔に記述できます。
ここでは、Pythonのfor文の基本的な書き方について詳しく見ていきましょう。

for文の基本的な書き方

Pythonのfor文は、以下の構文で記述します。

基本構文
for 変数 in イテラブルオブジェクト:
­ ­­ ­実行する処理

構文内にある「イテラブルオブジェクト」とは、リスト、タプル、文字列など、繰り返し処理できるデータ構造を指します。for文では、指定したオブジェクトの要素を1つずつ取り出し、変数に代入しながら処理を行います

例えば、リスト内の要素を順番に表示するコードは次の通りです。

fruits = [“りんご”, “バナナ”, “みかん”]

for fruit in fruits:
­ ­­ ­print(fruit)

出力結果:
りんご
バナナ
みかん

このように、for文を使うと簡潔に繰り返し処理を記述でき、Python特有の分かりやすさが活かされています。

Pythonの特徴や学ぶメリットについて、こちらの記事も参考にしてください。

【2025】Pythonとは?学び始めるメリットやAI・DX活用、資格取得について徹底解説

for文を回す対象「イテラブルオブジェクト」とは

Pythonのfor文では、「イテラブルオブジェクト」と呼ばれる特定のデータ構造を繰り返し処理の対象にします。

イテラブルオブジェクトとは、要素を1つずつ順番に取り出せるデータのことで、リストやタプル、文字列などがこれに該当します。

以下に、主なイテラブルオブジェクトの種類をまとめてみましょう。

種類 説明
リスト 複数の要素を持つ可変の配列 [1, 2, 3]
タプル 複数の要素を持つ不変の配列 (1, 2, 3)
文字列 文字の並び “hello”
辞書 キーと値のペアを持つデータ {“a”: 1, “b”: 2}
セット 重複しない要素の集合 {1, 2, 3}
範囲 一連の数値を生成するオブジェクト range(5)

表にあるデータ構造は、すべてfor文で利用できます。それぞれの用途に応じて、適切なオブジェクトを選んで使用しましょう。

for文はどんな場面で使われる?

for文はどんな場面で使われる?

Pythonのfor文は、幅広い場面で使用される非常に便利な構文です。データを効率的に処理したり、繰り返し作業を簡単に実行したりするために欠かせません。ここでは、for文が活躍する具体的な場面を見ていきます。繰り返し作業を効率化する際の基本的なツールとして活用しましょう。

  1. リストやタプルの要素を処理する
  2. 辞書のキーや値を操作する
  3. 数値範囲を繰り返す
  4. ファイルの行を順に処理する
  5. 文字列を操作する

①リストやタプルの要素を処理する

配列内のデータを1つずつ取り出し、表示や加工を行います。

numbers = [1, 2, 3]

for num in numbers:
­ ­­ ­print(num * 2) # 各要素を2倍

②辞書のキーや値を操作する

辞書のキーや値を順に取り出し、処理を実行します。

data = {“a”: 1, “b”: 2}

for key, value in data.items():
­­ ­­ print(f”{key}: {value}”) #配列すべてのキーと値のペアが出力される

③数値範囲を繰り返す

数値を一定範囲で繰り返し処理する場合に便利です。

for i in range(5):
­­ ­­ print(i) # 0から4まで表示

④文字列を操作する

文字列内の文字を1つずつ処理できます。

word = “Python”

for char in word:
­­ ­­print(char) #”Python”の各文字が1行ずつ出力される

⑤ファイルの行を順に処理する

テキストファイルを1行ずつ読み込み、内容を処理します。

# サンプルのテキストファイル「sample.txt」の内容
# ————
# りんご
# バナナ
# みかん
# ————

# テキストファイルを読み込むコード
with open(“sample.txt”, “r”, encoding=”utf-8″) as file:
for line in file:
­­
­­ print(line.strip()) # 各行の改行を削除して表示

for文におけるrange関数の使い方

for文におけるrange関数の使い方

for文と組み合わせて頻繁に使用される関数の1つがrangeです。range関数は、指定した範囲内の数値を生成し、それを繰り返し処理する場面で役立ちます。ここでは、range関数の基本的な使い方と、for文との組み合わせ例について詳しく見ていきましょう。

range関数の基本構文

range関数は、指定した範囲の数値を順番に生成する便利な関数です。for文と組み合わせることで、指定された数値範囲を効率的に処理できます。以下が基本的な使い方です。

基本構文
range(終了値)

この形式では、0から指定した終了値(終了値そのものは含まない)までの数値が生成されます。

次の例は、range(5) は [0, 1, 2, 3, 4] を作成するサンプルコードです。

for i in range(5):
­­ ­­ print(i)
実行結果:
0
1
2
3
4

開始値を指定する

range関数で開始値を設定する場合は、以下のように2つの引数を渡します

基本構文
range(開始値, 終了値)

次の例は、2から5までの整数を生成するサンプルコードです。

for i in range(2, 6):
­­ ­­ print(i)
実行結果:
2
3
4
5

Pythonのrangeは「以上、未満」の範囲で数値を生成するため、終了値は含まれない点に注意が必要です。開始値が省略される場合は、デフォルトで0からスタートします。

ステップや範囲を柔軟に指定する

range関数では、開始値や終了値だけでなく、「ステップ」と呼ばれる増減値を指定することができます。数値を一定の間隔で増やしたり減らしたりする繰り返し処理に便利です。

基本構文
range(開始値, 終了値, ステップ)

基本構文内の「ステップ」は、次の値までの増減幅を示しています。正の値を指定すれば増加、負の値を指定すれば減少させることができます。

次のサンプルコードは、ステップを指定して増加する例です。

for i in range(1, 10, 2): # 1から10未満の範囲で2ずつ増加
­­ ­­ print(i)
実行結果:
1
3
5
7
9

また次のサンプルコードは、負のステップで減少する例です。

for i in range(10, 0, -2): # 10から0未満の範囲で2ずつ減少
­­ ­­ print(i)
実行結果:
10
8
6
4
2

終了値は他の使い方と同様に、指定した値そのものは含まれない点に注意してください。ステップを省略するとデフォルトで「1」となり、特に指定がなければ連続する数値が生成されます。

また、負のステップを使用して数値を減少させる場合は、開始値が終了値よりも大きい必要がある点を理解しておきましょう。

リストのインデックスを操作する

range関数は、リストやタプルなどの要素に対してインデックス(位置情報)を操作する際にも便利です。リストのインデックスを利用することで、特定の位置にある要素を取得したり、操作したりすることができます。

リストのインデックスを使って要素を処理するには、range関数をリストの長さ(len関数で取得)と組み合わせます。

基本構文
for i in range(len(リスト)):
­­ ­­ 処理

次のサンプルコードは、リスト内の要素をインデックスを使って処理する例です。

fruits = [“りんご”, “バナナ”, “みかん”]

for i in range(len(fruits)):
­­ ­­ print(f”インデックス {i}: {fruits[i]}”)

実行結果:
インデックス 0: りんご
インデックス 1: バナナ
インデックス 2: みかん

ループ内でfruits[i]のように指定することで、範囲外のエラーは防げます。一方で、直接インデックスを指定する場合は注意が必要です。例えば上記の例では、fruits[1] と指定すれば「バナナ」を正しく取得できますが、fruits[3]を指定した場合は、リストの範囲を超えているためエラーが発生します

このため、直接指定する場合は、指定したインデックスがリストの長さ(len(fruits))以内であることを確認しましょう。

for文におけるenumerate関数の使い方

for文におけるenumerate関数の使い方

Pythonのfor文と組み合わせてよく使われる便利な関数に、enumerateがあります。enumerateを使うことで、ループ中にリストなどの要素とそのインデックス(位置情報)を同時に取得できるのがメリットです。ここでは、enumerate関数の基本的な使い方とその応用について詳しく見ていきましょう。

enumerate関数の基本構文と使い方

enumerate関数は、イテラブルオブジェクトの各要素に対して、そのインデックスと値を同時に取得できる便利な関数です。インデックスを個別に管理する必要がなくなるため、コードが簡潔になります。

基本構文
for インデックス, 値 in enumerate(イテラブルオブジェクト, 開始値):
­­ ­­ 実行する処理
※開始値(オプション): インデックスのスタート番号を指定(省略時は0から始まります)

次のサンプルコードは、リスト内の要素とそのインデックスを同時に取得して表示する例です。

fruits = [“りんご”, “バナナ”, “みかん”]

for i, fruit in enumerate(fruits):
­­ ­­ print(f”インデックス {i}: {fruit}”)

実行結果:
インデックス 0: りんご
インデックス 1: バナナ
インデックス 2: みかん

enumerate関数は、開始値を指定することで、インデックスを任意の数値から始めることができます。開始値を変更すると、インデックスがプログラム内の他の値と一致しなくなる場合があるため、用途に応じて使い分けましょう。

for i, fruit in enumerate(fruits, 1):
­­ ­­ print(f”インデックス {i}: {fruit}”)
実行結果:
インデックス 1: りんご
インデックス 2: バナナ
インデックス 3: みかん

リスト内の要素を条件処理する

enumerate関数を使うことで、リスト内の要素とそのインデックスを同時に処理しながら、条件に応じた操作を行うことができます。特定の要素だけを対象にした処理や、インデックスを使った条件分岐など、さまざまな応用が可能です。

例えば次のコードは、リスト内の要素が「バナナ」の場合にだけ特別な処理を行う例です。

fruits = [“りんご”, “バナナ”, “みかん”, “バナナ”]

for i, fruit in enumerate(fruits):
­­ ­­ if fruit == “バナナ”:
­­ ­­ ­­ print(f”インデックス {i}: {fruit}(特別な処理!)”)
­­ ­­ else:
­­ ­­ ­­ print(f”インデックス {i}: {fruit}”)

実行結果:
インデックス 0: りんご
インデックス 1: バナナ(特別な処理!)
インデックス 2: みかん
インデックス 3: バナナ(特別な処理!)

また、次の例は、インデックスが偶数の場合にのみ要素を処理する例です。

for i, fruit in enumerate(fruits):
­­ ­­ if i % 2 == 0: # 偶数インデックスかどうか
­­ ­­ ­­ ­­ print(f”インデックス {i}: {fruit}(偶数インデックス)”)
実行結果:
インデックス 0: りんご(偶数インデックス)
インデックス 2: みかん(偶数インデックス)

このように、if文を組み合わせることで、特定の条件を満たす要素だけを処理する柔軟なループが構築できます。また、インデックスを使うことで、要素の位置に応じた処理(例えば、偶数番目だけ処理するなど)が簡単に行えます。

enumerateを使った条件処理は、データ分析やリストのフィルタリング、特定条件下でのデータ操作など、さまざまな場面で役立ちます。効率的なループを実現するために活用してみましょう。

for文におけるzip関数の使い方

for文におけるzip関数の使い方

Pythonのzip関数は、複数のリストやタプルを組み合わせ、それぞれの要素をペアにして繰り返し処理を行う際に非常に便利です。for文と組み合わせることで、データを簡潔に操作できるようになります。ここでは、zip関数の基本的な使い方と、応用的な活用例について詳しく見ていきましょう。

zip関数の基本的な使い方

zip関数は、複数のリストやタプルの要素を対応する位置でペアにし、新しいイテラブルオブジェクトを生成します。これをfor文で使うことで、複数のリストを同時に効率よく処理できるのがメリットです。

基本構文
for 値1, 値2 in zip(リスト1, リスト2):
­ ­ 実行する処理

次の例では、2つのリストの対応する要素を同時に処理しています。

names = [“太郎”, “花子”, “次郎”]

scores = [85, 90, 78]

for name, score in zip(names, scores):
­ ­ print(f”{name}の得点: {score}”)

実行結果:
太郎の得点: 85
花子の得点: 90
次郎の得点: 78

リストの長さが異なる場合はどうなるのでしょうか。zip関数は、与えられたリストの中で最も短い長さに合わせてペアを作ります。サンプルを見てみましょう。

names = [“太郎”, “花子”]

scores = [85, 90, 78]

for name, score in zip(names, scores):
­ ­ print(f”{name}の得点: {score}”)

実行結果:
太郎の得点: 85
花子の得点: 90

最も短いリストの長さに合わせて処理されるため、要素が余る場合は無視される点に注目してください。すべての要素を処理したい場合は、リストを補完する必要があります。

このようにzip関数は、データのペアリングや複数リストの同時操作に役立ちます。特に、名前と得点、キーと値といった対応関係を持つデータの処理に非常に便利です。zip関数は2つ以上のリストも扱えますが、扱いやすさを考慮して適切な設計を心がけましょう。

リストをペアにして辞書を作る

zip関数は、複数のリストをペアにして、それを辞書として構築する際にも活用できます。キーと値を別々のリストで管理している場合に非常に便利です。

基本構文
辞書 = dict(zip(リスト1, リスト2))

次のサンプルコードは、名前をキー、得点を値とする辞書を作成する例です。

names = [“太郎”, “花子”, “次郎”]

scores = [85, 90, 78]# リストをペアにして辞書を作成

score_dict = dict(zip(names, scores))
print(score_dict)

実行結果:
{‘太郎’: 85, ‘花子’: 90, ‘次郎’: 78}

また、作成した辞書を使えば、各キーに対応する値を簡単に取得できます。

for name, score in score_dict.items():
­ ­ print(f”{name}の得点: {score}”)
実行結果:
太郎の得点: 85
花子の得点: 90
次郎の得点: 78

zip関数とdict関数を組み合わせると、簡潔なコードでリストから辞書を作成できます。このテクニックは、データの変換や整理、後続のデータ処理で役立ちます。特に、キーと値を個別のリストで管理している場合には積極的に活用してみましょう。

こちらの記事では、for文などを使ったPythonのおもしろプログラム集がまとめられています。興味のある方はぜひ参考にしてくださいね。

【2025】Pythonで遊べる面白いプログラム集!コピペOK・初心者必見の簡単ガイド

for文とrange・enumerate・zipを使いこなそう

Pythonのfor文は、range、enumerate、zipの各関数と組み合わせることで、データの繰り返し処理をより効率的かつ柔軟に行えます。それぞれの使い方を理解し実践することで、シンプルで可読性の高いコードが書けるようになるでしょう。

初心者の方は、基本的な文法から応用例までを練習することで、Pythonの基礎力が大幅に向上します。さらに効率的に学びたい方は、Python基礎セミナーの受講もご検討ください。

Python基礎セミナーはこちら

最新情報をチェックしよう!