for文

【Python】for文の基本的な使い方

【Python】for文の基本的な使い方
naoki-hn

Pythonでfor文により繰り返し処理をする方法について解説します。

for 文による繰り返し処理

Pythonで、繰り返し処理を行う場合にはfor文を使用します。繰り返し処理には、while文も使用できますが、while文については「while文の基本的な使い方」を参考にしてください。

Pythonのfor文は、リストや辞書などのイテラブルなオブジェクト(※)から要素を取り出して処理を行います。

この記事では、Pythonにおけるfor文により繰り返し処理をする方法の基本について紹介します。

※イテラブルなオブジェクト

イテラブルなオブジェクトとは反復可能なオブジェクトでリスト、タプル、辞書、集合等が代表的なものになります。イテレータについてはこちらでまとめていますので参考にしてください。

for 文の基本的な使い方

for文では、リスト、辞書、集合等のイテラブルなオブジェクトから要素を取り出して処理します。C言語等のfor文ではfor(i =0; i < 10; i++)のように初期化値、条件、変化式のように指定して繰り返し処理しますが、Pythonのfor文では少し異なっています。

Pythonにおけるfor文の構文は以下になります。

for 変数 in イテラブルなオブジェクト:
    処理コード...

以下の使用例を見ながらfor文の使い方を確認しましょう。

# for文の基本的な使い方
data = [10, 20, 30, 40, 50]

for dt in data:
    print(f"dt: {dt}")
【実行結果】
dt: 10
dt: 20
dt: 30
dt: 40
dt: 50

上記例では、dataという数値リストを用意し、dataから要素を一つずつ取り出して値を表示しています。dataの部分はリストだけではなく辞書、集合等のイテラブルなオブジェクトであれば同様に使うことができます。

break 文によるループの終了

for文の繰り返し処理では、一定の条件を満たした場合にfor文を抜けて次の処理に移りたい場合があります。このような場合にfor文を途中で抜けるにはbreak文を使います。

# break文でループを抜ける
data = [10, 20, 30, 40, 50]

for dt in data:
    print(f"start: {dt}")
    if dt > 30:
        # 30より大きい値の場合はループを抜ける
        print("break")
        break
    print("end")
【実行結果】
start: 10
end
start: 20
end
start: 30
end
start: 40
break

上記例では、for文で順に取り出した数値が30より大きい数値の場合にbreak文で処理を抜けます。

実行結果を見ると数値が40のループに入った際にdt > 30の条件に一致するため"break"という文字が表示されてループが終わっていることが分かります。この時、for文を抜けているため、後続の"end"という文字列は表示されていません。

continue 文による次のループへのジャンプ

上記で紹介したbreak文は一定条件を満たす場合にfor文を終了する方法でした。一定の条件を満たした場合に、以降の処理をスキップして次のループへ進みたい場合はcontinue文を使います。

# continue文で次のループへ
data = [10, 20, 30, 40, 50]

for dt in data:
    print(f"start: {dt}")
    if dt < 30:
        # 30より小さい値の場合は、次のループへ
        continue
    print("end")
【実行結果】
start: 10
start: 20
start: 30
end
start: 40
end
start: 50
end

上記例では、数値が30より小さい値の場合は、処理をスキップして次のループへ進みます。

実行結果を見ると10, 20の場合は"end"が表示されておらず、printがスキップされていることが分かります。しかし、break文のようにfor文を抜けているわけではなく後続する30, 40, 50についてはprint処理が実行されていることが分かります。

else による正常終了の確認

for文の処理が正常に終了しているかを確認したい場合には、elseで確認することができます。正常終了と言っているのは「break文が実行されていない」ということです。

以下の例で確認してみましょう。

# elseによるbreakのチェック(breakが呼び出されるケース)
data = [10, 20, 30, 40, 50]

for dt in data:
    print(f"start: {dt}")
    if dt > 30:
        # 30より大きい値の場合はループを抜ける
        break
    print("end")
else:
    # breakが呼び出されなければ実行
    print("正常終了")

print("\n==========")
# elseによるbreakのチェック(breakが呼び出されないケース)
data = [10, 20, 30]

for dt in data:
    print(f"start: {dt}")
    if dt > 30:
        # 30より大きい値の場合はループを抜ける
        break
    print("end")
else:
    # breakが呼び出されなければ実行
    print("正常終了")
【実行結果】
start: 10
end
start: 20
end
start: 30
end
start: 40

==========
start: 10
end
start: 20
end
start: 30
end
正常終了

上記例は、前半部分は「break文が呼び出されて処理を抜けるケース」、後半部分は「breakが呼び出されないケース」となっています。

前半の処理では、break文が呼び出されているのでelseの処理に入っていないことが分かります。一方で、後半の処理ではbreak文が呼び出されないのでelseの処理に入り、"正常終了"というprintが実行されています。

このようにbreak文の実行有無を確認するのにelseは便利です。

for 文でよく使う方法

range を用いた for

0, 1, 2, 3, 4, …のような数値シーケンスを使ってfor文を実行したい場合にはrangeが便利です。rangeを使用したfor文の使用方法については「rangeを用いたfor文の使い方」を参考にしてください。

enumerate を用いた for

for文を実行時に、繰り返しの中で取り出している要素が何番目の要素なのかを判断するにはenumerateが便利です。enumerateを使用したfor文の使用方法については「enumerateを用いたfor文の使い方」を参考にしてください。

zip を用いた for

for文を実行時に、例えば2つのリストを同時に繰り返し処理するといったように複数オブジェクトを同時に処理するにはzipが便利です。zipを使用したfor文の使用方法については「zipを用いたfor文の使い方」を参考にしてください。

まとめ

Pythonでfor 文により繰り返し処理をする方法について解説しました。

Python の for 文は、リストや辞書などのイテラブルなオブジェクトから要素を取り出して処理を行います。この記事では、for 文の基本的な使い方を紹介しました。

for 文は、Pythonに限らず、多くのプログラム言語における重要な制御構文です。しっかりと使い方を覚えて、使えるようにしましょう。

ソースコード

上記で紹介しているソースコードについては GitHub にて公開しています。参考にしていただければと思います。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド
ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました