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などのベクトル化された手法を検討すると、パフォーマンスを大幅に改善できることがあります。
-
WindowsでPythonを使う方法|インストールから実行・モジュール導入まで完全解説
初心者にも学びやすいプログラミング言語の代表格として、Pythonは世界中の何百万人ものコーダーに選ばれています。学習のハードルが低く、Windows・macOS・Linuxなど主要なOSすべてでサポートされており、Webサイト開発からデスクトップゲーム制作まで、幅広いプロジェクトに活用できるのが魅力です。 macOSやLinuxではPythonが最初からインストールされていることが多い一方、Windowsではいくつか追加の手順を踏む必要があります。この記事では、WindowsでPythonをインストールし、実際に使い始めるまでの流れをわかりやすく解説します。 WindowsへのPyt
-
PythonのTkinterでスレッドを使う方法|threadingモジュールによる非同期処理の基本
Tkinterでは、スレッド(Threading)を活用することで、複数の関数を同時に実行できます。これにより、アプリケーション内の処理を非同期で動かすことが可能になります。 Pythonでスレッドを使用するには、まずthreadingモジュールをインポートし、そのThreadクラスを継承した新しいクラスを定義します。そして、クラス内でrunメソッドをオーバーライドし、実行したい処理をその中に記述します。 つまり、スレッドを使えば複数の作業を並行して進めることができます。Tkinterアプリケーションでスレッドを実現する際は、Thread()関数を利用します。 ここでは、「一定時間スリープした