スキルアップ

Python入門:繰り返し処理(ループ)についての基礎

はじめに

プログラミングにおいて、
前回の記事でまとめた条件分岐(if文)と
並んで登場頻度が高く、重要な構文のひとつが
「繰り返し処理(ループ)」です。

たとえば、

「1〜100までの数を順番に表示したい」
「リストに入っている全ユーザーの情報を一人ずつ処理したい」
「条件に合うデータだけを抽出したい」

こんなときに登場するのが、
for文while文 を使った繰り返し処理です。

繰り返し処理をうまく使いこなせるようになると、

  • データの自動処理(バッチ処理)
  • Webスクレイピング
  • テキストの一括操作
  • 検索・抽出・変換の自動化

といった、いわゆる「面倒な処理」や「ルーティン作業」を、
シンプルなコードでサクッと片付けられるようになります。

また、プログラミングの処理構造は
条件分岐と繰り返しを組み合わせで作られているため、
しっかりと押さえることでプログラミング未経験でも
要点を掴むことができます。

今回の記事では、Python初心者として私が学んだ
「繰り返し処理」について、基本構文から便利な組み合わせ方までを
まとめていきます。

この記事はこんな方におすすめです!

  • プログラミング未経験の方
  • Pythonのfor文while文の使い方が
    まだ曖昧な方
  • range()enumerate()zip() など
    便利な組み合わせを
    実践で使えるようになりたい方
  • データ処理や自動化に強くなりたい初学者
  • 副業を目指したい方


第1章:繰り返し処理の基本

まず繰り返し処理(ループ処理)とは、
ある条件のもとで同じ処理を何度も行いたいときに使います。

Pythonでは主に以下の2つの方法があります。

  • while 文:
    条件が真の間、繰り返し続ける
  • for 文:
    あらかじめ決まった範囲・リストなどの
    要素を順に取り出して処理

それぞれの違いと基本的な使い方を見ていきましょう。


while文の基本構文

while 条件式:
    処理内容

条件式Trueである限り、処理内容が繰り返されます。

例:1〜5までの数を出力

count = 1
while count <= 5:
    print(count)
    count += 1

ポイントとして、

  • 無限ループと呼ばれるバグを含みやすいため、
    条件式の設定が重要
    例題のソースコードはcountの変数が
    1ずつ増えることで終了させられる
  • ループの終了条件が曖昧なときや、
    条件によって処理を続けるかどうか
    判断したいときに適している

for文の基本構文

for 変数 in 反復構造体:
    処理内容

反復構造体はコンテナ(リストなど)や文字列など
「繰り返せるもの(イテラブル)」となるデータの集合です。

Pythonのfor文は、この「繰り返せるもの」を
順に1つずつ処理します。

例:リストの要素を繰り返す

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

range()関数での数値の繰り返しもfor文ではよく利用されます。

range()は、「開始値から終了値 - 1まで」の数列
を生成する関数になります。

例:0から4まで繰り返す

for i in range(5): #0~4の数列を生成
    print(i)

rangeの構文とバリエーション

range(終了値) # 0〜(終了値-1)まで
range(3) #0,1,2が生成
range(開始値, 終了値) # 開始値〜(終了値-1)まで
range(1,3) #1,2が生成
range(開始値, 終了値, ステップ)  # ステップ間隔で生成
range(1,7,2) #1,3,5が生成

range()はそのままではリストではなく、
rangeオブジェクトという特別な型です。

デバッグ中に中身を確認したいときや、
forループ以外で使いたいときには
リストに変換するのが便利です。

list(range(5))  # → [0, 1, 2, 3, 4]

whileとforの使い分け

状況推奨ループ
処理回数があらかじめ決まっている場合for文
条件に応じて処理を継続・終了したい場合while文

例えば「0になるまで繰り返す」
「ユーザーが 'q' を押すまで繰り返す」
などは while が向いています。

一方で、「10回処理する」
「リストの中身を1つずつ処理する」
などは for が分かりやすいです。

for はシーケンスやrange()と組み合わせることで、
明確な範囲を効率的に処理できます。

使い分けのひとつの目安は
「処理回数が決まっているかどうか」で判断し、
決まっていればfor
それ以外ならwhileを基本としましょう。


第2章:繰り返し処理の制御

繰り返し処理では、ループの途中で

「処理を止めたい」
「一部だけスキップしたい」

といった場面がよくあります。

そんなときにPythonで使うのが次の3つの制御文です。

  • break
    ループを途中で終了する
  • continue
    現在のループ処理をスキップして、
    次のループに移る
  • return
    関数自体の処理を終了し、
    必要があれば値を返す

それぞれの違いと使いどころは以下の様になります。


break:ループを強制終了

breakは、ループ処理を途中で終了したいときに使います。
条件を満たしたらそこでループ処理を打ち切ります。

例:特定の値が見つかったら終了

fruits = ["apple", "banana", "orange", "grape"]

for fruit in fruits:
    if fruit == "orange":
        print("オレンジ発見!処理を終了します")
        break
    print(f"{fruit} を確認中…")

出力結果:

apple を確認中…
banana を確認中…
オレンジ発見!処理を終了します

使いどころのポイント:

  • リストやデータの中から
    「最初に見つけた一致する値」
    だけ処理したいとき
  • 特定の条件で処理を即終了し、
    無駄な繰り返しを省きたいとき
  • 無限ループ (while True:) の中で
    「終了条件」を手動で制御したいとき

continue:その回だけスキップ

continueは、現在のループ処理だけをスキップし、
次の繰り返し処理へと進みます。

例:偶数だけスキップして出力

for i in range(1, 6):
    if i % 2 == 0:
        continue  # 偶数はスキップ
    print(f"{i} は奇数です")

出力結果:

1 は奇数です
3 は奇数です
5 は奇数です

使いどころのポイント:

  • データの中に「無視したい条件」がある場合
  • 条件に合致しないときに、
    残りの処理をスキップしたい場合

return:関数を途中で終了する

returnは関数の中で使います。
ループを含む関数の処理を途中で終了させたいときに使い、
「値を返す」こともできます。

「関数」については、次回の記事でまとめる予定です。
わからない方は、現時点では処理の塊ぐらいの認識で大丈夫です。

例:マイナスの値があったら関数ごと終了

def check_values(values):
    for v in values:
        if v < 0:
            print("負の値が見つかりました")
            return  # 関数終了
        print(f"{v} は有効です")
    print("すべての値が正です")

check_values([10, 5, -2, 8])

出力結果:

10 は有効です
5 は有効です
負の値が見つかりました

使いどころのポイント:

  • バリデーションチェックなどで
    「条件を満たさなければ即終了」したいとき
  • 処理の途中でも結果が出た時点で
    関数の残りをスキップしたいとき
  • 関数内のループで break よりも
    外側まで一気に抜けたい場合

break / continue / return の違いまとめ

構文対象処理の内容
breakループループ全体を即終了し、外に出る
continueループ今の1回だけスキップして、次のループに進む
return関数関数全体の処理を終了(ループごと終了する)

それぞれの実務でありがちな使い方としては、

  • ユーザーリストの中から
    条件を満たす最初の人だけ処理
    break
  • 不正なデータはスキップして処理続行
    continue
  • バリデーションに失敗したら関数終了
    return

3つの使い分けを意識することで、
より効率的で読みやすいコードを書くことができます。


第3章:コンテナ型の繰り返し処理

Pythonでは、リスト・タプル・セット・ディクショナリなど
「複数の値をまとめて扱える型」のことをコンテナ型と呼びます。

これらのコンテナは、for文を使って
簡単に中身を1つずつ取り出して処理できます。
特に実務で頻出なのがこの使い方です。

それぞれのデータ型に応じたループの書き方と
注意点
をまとめていきます。


リストやタプルの繰り返し処理

リストやタプルは、順序付きのデータを格納できます。
そのためfor文で1つずつ順番に取り出せます。

例:リストの要素を繰り返す

colors = ["red", "blue", "green"]
for color in colors:
    print(color)

出力結果:

red
blue
green

タプルの繰り返しでもリスト同様の記述になります。

point = (10, 20, 30)
for value in point:
    print(value)

出力結果:

10
20
30

セットの繰り返し処理

セットは「順序のない重複を許さない集合」です。

繰り返し処理は可能ですが、
順序は保証されない点に注意しましょう。
順序保証がないため、結果が毎回同一とはなりません。

unique_values = {3, 1, 4, 1, 5}
for val in unique_values:
    print(val)

出力結果(順序はランダム):

1
3
4
5

セットは同じ値は1つしか保持されず、
順番もバラバラになる点には注意が必要です。


ディクショナリの繰り返し処理

ディクショナリは「キーと値のペア」で構成されたコンテナです。

ディクショナリについては、
ループ方法が以下のように複数あるので注意が必要です。

  • キーのみのループ
  • 値のみのループ
  • キーと値のループ

例:キーのみをループ(デフォルト動作)

for文の反復構造体にディクショナリが渡される場合は
キーが繰り返しの対象となります。

また、ディクショナリ.keys()を受け渡すことでも同様です。

person = {"name": "Alice", "age": 30, "city": "Tokyo"}
for key in person:
    print(key)
for key in person.keys(): #keys()でも同様
    print(key)

出力結果:

name
age
city

例:値のみをループ

ディクショナリの値のみをループするときは、
ディクショナリ.values()を利用します。

person = {"name": "Alice", "age": 30, "city": "Tokyo"}
for val in person.values():
    print(val)

出力結果:

Alice
30
Tokyo

例:キーと値をループ

ディクショナリのキーと値をループするときは、
ディクショナリ.items()を利用します。

person = {"name": "Alice", "age": 30, "city": "Tokyo"}
for key, val in person.items():
    print(f"{key} は {val} です")

出力結果:

name は Alice です
age は 30 です
city は Tokyo です

入れ子構造のループ

コンテナの中に
さらにコンテナがある場合(多次元リストなど)も、
ネストしたfor文でループできます。

matrix = [[1, 2], [3, 4], [5, 6]]
for row in matrix:
    for num in row:
        print(num, end=" ")

出力結果:

1 2 3 4 5 6

第4章:繰り返しを効率化する関数

ここまでで基本的なforwhile
使った繰り返し処理についてまとめました。

ここからは、繰り返し処理を
もっと簡潔に・効率よく・Pythonらしく
記述できるようになるために、
以下の2つの組み込み関数を紹介します。

  • enumerate()
    インデックス(番号)付きで要素を取得
  • zip()
    複数のリストやコンテナを同時にループ処理

enumerate():インデックス付きで繰り返す

リストや文字列などをforで繰り返すとき、
「現在何番目の要素なのか」
も一緒に取得したい場面はよくあります。

そんなときに便利なのがenumerate()関数です。

例:リストの要素とインデックスを同時に取得

fruits = ["apple", "banana", "cherry"]

for index, fruit in enumerate(fruits):
    print(f"{index}番目のフルーツは {fruit} です")

出力結果:

0番目のフルーツは apple です
1番目のフルーツは banana です
2番目のフルーツは cherry です

ポイント:

  • enumerate()はデフォルトで
    0からカウント開始
  • enumerate(リスト, 開始番号)
    とすれば開始番号を変更可能

例:開始番号を変える場合

fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, 1):  # 1から始める
    print(f"{index}個目 → {fruit}")

出力結果:

1個目 → apple
2個目 → banana
3個目 → cherry

zip():複数のリストを同時にループ処理

複数のリストを「対応づけて」
同時に処理したい場面もよくあります。
たとえば「名前リスト」と「点数リスト」があって、
それぞれの組を1つずつ扱いたいときなどです。

そんなときに活躍するのが zip() 関数です。

例:名前と点数を同時に処理

names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]

for name, score in zip(names, scores):
    print(f"{name}さんの点数は {score} 点です")

出力結果:

Aliceさんの点数は 85 点です
Bobさんの点数は 92 点です
Charlieさんの点数は 78 点です

ポイント:

  • 各リストの要素を「ペア」にして1つずつ取り出す
  • 要素数が異なる場合、
    一番短いリストに合わせて処理

例:要素数の異なるリストの処理

names = ["Alice", "Bob"]
scores = [85, 92, 78]  # 長い

for name, score in zip(names, scores):
    print(name, score)

出力結果:

Alice 85
Bob 92

"78"は出力されない。(namesが2要素のため)


応用:enumerateとzipの組み合わせ

zipにenumerateを組み合わせると、複数データ+インデックスを同時に扱うこともできます。

names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]

for i, (name, score) in enumerate(zip(names, scores), 1):
    print(f"{i}番目: {name} → {score}点"

出力結果:

1番目: Alice → 85点
2番目: Bob → 92点
3番目: Charlie → 78点

第5章:まとめ & 次回予告

今回は、Pythonの繰り返し処理(ループ)について、
基本的な使い方から便利な関数や活用例を学んできました。

繰り返し処理は、条件分岐と並んでプログラミングにおいて
基礎中の基礎ですが、しっかり理解しておくことで
応用の幅が大きく広がります。

ループ処理を使えるようになることで、

「大量のデータを一括処理する」
「条件に応じて動きを変える」
「結果を集計する」

など、さまざまな自動化タスクが実現可能になります。

特に副業や在宅ワークで見られることのある、

  • Excelデータの整形や自動処理
  • Webサイトの情報収集(スクレイピング)
  • 大量メールの送信やログ解析

といった業務では、ループ処理は欠かせない考え方です。

プログラミング未経験だと、
繰り返しの処理イメージは難しいですが
そんな中でも「手を動かして試すこと」が何より大切です。

ぜひ、繰り返し処理を、
身近なデータや課題に使ってみてください。

次回は、Pythonだけでなくプログラムを作る上の構造で
重要な要素のひとつ、関数(メソッド)について学んでいきます。

関数を定義することで、処理の再利用性が高まり、
コードの可読性や保守性が大きく向上します。

  • def文による関数定義の基本
  • 引数・戻り値の扱い方
  • デフォルト引数・キーワード引数
  • 実務で役立つ関数の組み立て方

こういった内容を中心に学習していきます。

▶次回の記事はこちら:
[現在準備中です!少々お待ちください!]

-スキルアップ