Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでネストしたループ(二重ループ)の使い方をわかりやすく解説

プログラミングにおいて「ネスト(入れ子)」とは、同じ種類の構造の中に、別の同種の構造を組み込むことを指します。したがって、「ネストしたループ」とは、ループの中にさらに別のループを記述することを意味します。

この構成では、外側のループが1回繰り返されるたびに、内側のループがすべての反復処理を実行します。つまり、外側のループが4回回る場合、内側のループもその都度4回ずつ実行され、合計16回の処理が行われることになります。

Pythonにおけるネストしたループの基本

Pythonでは、ループの本体はインデント(字下げ)レベルを一段深くした文のまとまりとして表現されます。ネストしたループの場合、内側のループは外側のループよりもさらに深いインデントレベルで記述する必要があります。このインデントの違いが、どちらが外側でどちらが内側かを決定づける重要なポイントです。

以下に、最もシンプルなネストしたループの例を示します。

コード例

for x in range(4):
    for y in range(4):
        print(x, y)

実行結果

このコードを実行すると、次のような出力が得られます。

0 0
0 1
0 2
0 3

1 0
1 1
1 2
1 3

2 0
2 1
2 2
2 3

3 0
3 1
3 2
3 3

実行結果の読み方

出力を見ると、変数 x(外側のループ)が固定されている間に、変数 y(内側のループ)が0から3まで順番に変化していることがわかります。x がひとつ進むと、再び y が0から3まで繰り返されます。

ネストしたループの主な活用場面

  • 二次元リスト(行列)の操作: 行と列をそれぞれループで処理する際に使われます。
  • 九九表や掛け算表の生成: 外側のループで行、内側のループで列を制御します。
  • パターン描画: アスタリスク(*)などで三角形やピラミッド状の出力を作成できます。
  • 全組み合わせの列挙: 複数のリストから可能なすべてのペアを生成する場合に便利です。

注意点:パフォーマンスへの影響

ネストしたループは反復回数が掛け算で増えるため、ループの階層が深くなるほど処理量は急激に増加します。例えば、各ループが1000回繰り返す二重ループでは、合計100万回の処理が発生します。大きなデータを扱う場合は、itertools.product() のような標準ライブラリやNumPyなどのベクトル化された手法を検討すると、パフォーマンスを大幅に改善できることがあります。

  1. WindowsでPythonを使う方法|インストールから実行・モジュール導入まで完全解説

    初心者にも学びやすいプログラミング言語の代表格として、Pythonは世界中の何百万人ものコーダーに選ばれています。学習のハードルが低く、Windows・macOS・Linuxなど主要なOSすべてでサポートされており、Webサイト開発からデスクトップゲーム制作まで、幅広いプロジェクトに活用できるのが魅力です。 macOSやLinuxではPythonが最初からインストールされていることが多い一方、Windowsではいくつか追加の手順を踏む必要があります。この記事では、WindowsでPythonをインストールし、実際に使い始めるまでの流れをわかりやすく解説します。 WindowsへのPyt

  2. PythonのTkinterでスレッドを使う方法|threadingモジュールによる非同期処理の基本

    Tkinterでは、スレッド(Threading)を活用することで、複数の関数を同時に実行できます。これにより、アプリケーション内の処理を非同期で動かすことが可能になります。 Pythonでスレッドを使用するには、まずthreadingモジュールをインポートし、そのThreadクラスを継承した新しいクラスを定義します。そして、クラス内でrunメソッドをオーバーライドし、実行したい処理をその中に記述します。 つまり、スレッドを使えば複数の作業を並行して進めることができます。Tkinterアプリケーションでスレッドを実現する際は、Thread()関数を利用します。 ここでは、「一定時間スリープした