かゆい所に手が届く解説

Python で foreach文 の処理を実現する

Python で foreach文 の処理を実現する

「Python にはなぜ foreach文 がないんだろう?」と思うことはありませんか?

特に、JavaScript や C# など Python 以外のプログラミング言語の経験者の方。

foreach文はfor文より簡単に繰り返し処理が記述できるので重宝しますよね。

この記事では、Python で foreach文 と同じ処理を実現する方法をご紹介します。

対象者は Python で for文 の基本が理解できている方を推奨しますが、良く分からない方でも理解できるように丁寧に解説します。

for文について、こちらの記事が参考になります。

イメージをつかんでもらえるように例題を載せていますので、初心者の方も安心してご覧下さい。

foreach文 とは?

foreach文を知らないという方に向けて、基本的な使い方を紹介しておきます。

foreach文は、プログラミングにおける繰り返し(ループ)制御構文の一つです。

可読性が高く、for文 と比べて簡潔に記述することが可能です。

配列や辞書からすべての要素を1回ずつ読み出すことができます。

使用できるプログラミング言語は C# 、PHP 、JavaScript など多くの言語が対応しています。

C# における基本的な記述例は下の通りです。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        foreach (int number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}

各要素はループ内で変数に代入され、その変数を使用して処理が行われます。

実行結果は以下のようになります。

1
2
3
4
5

同じ処理をfor文で記述すると以下のようになります。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        for (int i = 0; i < numbers.Count; i++)
        {
            Console.WriteLine(numbers[i]);
        }
    }
}

このように、リストから要素を取り出す処理は for文 よりも foreach文 の方が分かりやすいですね。

foreach文 が苦手な処理

苦手というより、不向きな処理があります。

foreach文 が苦手な処理の一例を紹介します。

*こちらもPython の話ではないので聞き流してください

①要素のインデックスが必要な場合

foreach文 は要素を直接取得し、インデックスにアクセスするのが難しいため、インデックスが重要な場合には不向きです。

このような場合には for文 を使用するのが良いでしょう。

// インデックスが必要な場合
List<int> numbers = new List<int> { 10, 20, 30, 40, 50 };
for (int i = 0; i < numbers.Count; i++)
{
    Console.WriteLine($"Index: {i}, Value: {numbers[i]}");
}

②複数のコレクションを同時に反復処理する場合

複数のコレクションを同時に反復処理する必要がある場合、foreach文 はそれをサポートしていません。

この場合、LINQ の zip関数 などを使用したり、for文 を使って対処することがあります。

③要素の追加、削除、変更などの操作が必要な場合

foreach文 では、コレクション内の要素を直接変更することが難しいため、要素を変更する必要がある場合には適していません。

この場合も、for文 を使用することで要素の操作が可能となります。

④途中でループを終了する必要がある場合

foreach文 は通常、反復処理を完了するまで続けられます。

途中でループを終了する必要がある場合には、for文 の中で breakステートメントを使用する必要があります。

foreach文 はシンプルな反復処理には非常に便利です。

しかし、上記のようなケースにはあまり向いていません。

Pythonでは foreach文 が使えない?

「使えない」というと語弊があります。

もう少し正しく表現すると「Python の for文 は何でもできるから要らない」ということになります。

Python で foreach文 と同じ処理をやってみよう

「絶対に foreach文 でなければできない処理」というものはありません

ここでは、同じ処理をfor文 で実現する方法をご紹介します。

for文 だけで実現する方法

上の foreach文 の例と同じ処理を、Python の for文 で記述すると以下の様になります。

my_list = [1, 2, 3, 4, 5]

for item in my_list:
    print(item)

やはり Python は分かりやすいですね。

それ以上に for文 でこれほどシンプルに処理できるのは素晴らしいです。

もちろん、実行結果は以下の通り同じです。

1
2
3
4
5

関数と組み合わせることも可能

Python の素晴らしいところは「分かりやすい」だけではありません。

例えば、上の実行結果を「逆順にして出力する」ということも簡単にできます。

この場合、reversed() 関数を使うと実現できます。

my_list = [1, 2, 3, 4, 5]

for item in reversed(my_list):
    print(item)

その他にも、昇順に並べ替えたい場合はsorted()関数があります。

my_list = [5, 2, 1, 4, 3]

for item in sorted(my_list):
    print(item)

また、降順にしたい場合はsorted()関数の第二引数に「reverse=True」とすればOKです。

my_list = [5, 2, 1, 4, 3]

for item in sorted(my_list, reverse=True):
    print(item)

やはり、Python は素晴らしいです。

まとめ

今回はPython で foreach文 の処理を実現する方法を解説しました。

Python で for文 を使ったリスト処理について、こちらの記事でも紹介しています。

今後も便利で面白い実装方法やPythonを中心としたプログラミングの情報をお届けします。

Pythonの演習はこちら ▶

以下のメルマガにご登録頂くと、不定期に配信をお届けします。

ぜひ購読してください!

それでは、ステキなPythonライフを!

もっと詳しく知りたいという方は、こちらの書籍もおススメです。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 最近ではPythonを用いたアプリ開発、ウェブアプリケーションの開発と運営に没頭。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です