logo

Python の入れ子ループ

Python プログラミング言語には 2 種類のループがあります。 for ループ そして while ループ 。これらのループを使用して、Python でネストされたループを作成できます。ネストされたループとは、ループ内のループを意味します。たとえば、for ループ内の while ループ、for ループ内の for ループなどです。

バイトから文字列へのPython
Python のネストされたループ

Python の入れ子ループ



Python のネストされたループの構文:

外部ループ式:

内部ループ式:

inner_loop 内のステートメント



アウターループ内のステートメント

Python のネストされたループの例

例 1: Python の入れ子ループの基本的な例

Python3






x>=> [>1>,>2>]> y>=> [>4>,>5>]> for> i>in> x:> >for> j>in> y:> >print>(i, j)>

>

>

出力:

1 4 1 5 2 4 2 5>

Python3




x>=> [>1>,>2>]> y>=> [>4>,>5>]> i>=> 0> while> i <>len>(x) :> >j>=> 0> >while> j <>len>(y) :> >print>(x[i] , y[j])> >j>=> j>+> 1> >i>=> i>+> 1>

>

>

時間計算量: の上2)

補助スペース: ○(1)

例 2: Python のネストされた for ループを使用した九九の出力

Python3




# Running outer loop from 2 to 3> for> i>in> range>(>2>,>4>):> ># Printing inside the outer loop> ># Running inner loop from 1 to 10> >for> j>in> range>(>1>,>11>):> ># Printing inside the inner loop> >print>(i,>'*'>, j,>'='>, i>*>j)> ># Printing inside the outer loop> >print>()>

>

>

出力:

2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 2 * 10 = 20 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 3 * 10 = 30>

時間計算量: の上2)

Java演算子

補助スペース: ○(1)

上の例では、2 と 3 の乗算表に対して 2 から 3 まで実行される外側の for ループを取得し、そのループ内で 1 から 10 まで実行される内側の for ループを取得し、その中で乗算を出力しています。内部ループの各反復値を乗算してテーブルを作成します。 反復 以下の出力にあるように、外側のループの値。

例 3: 異なる内側と外側のネストされたループを使用した印刷

Python3




# Initialize list1 and list2> # with some strings> list1>=> [>'I am '>,>'You are '>]> list2>=> [>'healthy'>,>'fine'>,>'geek'>]> # Store length of list2 in list2_size> list2_size>=> len>(list2)> # Running outer for loop to> # iterate through a list1.> for> item>in> list1:> > ># Printing outside inner loop> >print>(>'start outer for loop '>)> ># Initialize counter i with 0> >i>=> 0> ># Running inner While loop to> ># iterate through a list2.> >while>(i # Printing inside inner loop print(item, list2[i]) # Incrementing the value of i i = i+1 # Printing outside inner loop print('end for loop ')>

>

>

b+ ツリー

出力:

start outer for loop I am healthy I am fine I am geek end for loop start outer for loop You are healthy You are fine You are geek end for loop>

時間計算量: の上2)

補助スペース: ○(1)

この例では、いくつかの文字列を使用して 2 つのリストを初期化しています。 len() 関数を使用して list2 のサイズを「list2_Size」に格納し、それを while ループ内でカウンターとして使用します。その後、外側の for ループを実行して、 list1 を反復処理する そして、そのループ内で内部の while ループを実行して、リストのインデックス付けを使用して list2 を反復し、list1 のすべての値に対して list2 の各値を出力します。

ネストされたループでの Break ステートメントの使用

ループ制御文の一種です。ループ内では、 ブレークステートメント ループから抜け出すには。ループ内で Break ステートメントを使用すると、残りの反復がスキップされ、ループが終了します。例を使って理解してみましょう。

コード:

Python3




# Running outer loop from 2 to 3> for> i>in> range>(>2>,>4>):> ># Printing inside the outer loop> ># Running inner loop from 1 to 10> >for> j>in> range>(>1>,>11>):> >if> i>=>=>j:> >break> ># Printing inside the inner loop> >print>(i,>'*'>, j,>'='>, i>*>j)> ># Printing inside the outer loop> >print>()>

>

>

出力:

2 * 1 = 2 3 * 1 = 3 3 * 2 = 6>

時間計算量: の上2)

補助スペース: ○(1)

上記のコードは例 2 と同じです。このコードでは、内部ループ内で Break ステートメントを使用しています。 if ステートメント 。内側のループ内で、「i」が「j」と等しくなった場合、内側のループは終了され、残りの繰り返しは実行されません。出力テーブル 3 でわかるように、次の繰り返しでは最大 2 回の繰り返しが出力されます。 「i」が「j」と等しくなり、ループが終了します。

ネストされたループでの continue ステートメントの使用

continue ステートメントもループ制御ステートメントの一種です。これは、break ステートメントのちょうど逆です。 continue ステートメントはループを強制的にループの次の反復にジャンプさせますが、break ステートメントはループを終了します。コードを使って理解してみましょう。

Python3




アンドロイドはゲームピジョンをプレイできますか

# Running outer loop from 2 to 3> for> i>in> range>(>2>,>4>):> ># Printing inside the outer loop> ># Running inner loop from 1 to 10> >for> j>in> range>(>1>,>11>):> >if> i>=>=>j:> >continue> ># Printing inside the inner loop> >print>(i,>'*'>, j,>'='>, i>*>j)> ># Printing inside the outer loop> >print>()>

>

>

出力:

2 * 1 = 2 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 2 * 10 = 20 3 * 1 = 3 3 * 2 = 6 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 3 * 10 = 30>

時間計算量: の上2)

補助スペース: ○(1)

上記のコードでは、break ステートメントを使用する代わりに continue ステートメントを使用しています。ここで、内側のループで 'i' が 'j' に等しくなると、出力 2 * 2 = 4 および 3 * 3 = 9 に見られるように、内側のループのコードの残りの部分がスキップされ、次の反復にジャンプします。その時点で「i」が「j」と等しくなるため、印刷されません。

リスト内包表記を使用した単一行の入れ子ループ

複数行のネストされたループを単一行に変換するには、次を使用します。 Python のリスト内包表記 。リストの内包表記には、要素ごとに実行される式と、リスト内の各要素を反復する for ループで構成される括弧が含まれます。

リスト内包表記の構文:

新しいリスト = [ 式(要素) のために 要素 古いリスト もし 状態 ]

コード:

Python3




# Using list comprehension to make> # nested loop statement in single line.> list1>=> [[j>for> j>in> range>(>3>)]> >for> i>in> range>(>5>)]> # Printing list1> print>(list1)>

>

>

出力:

[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]>

上記のコードでは、リスト内包表記 [j for j in range(3)] の内側のループでリスト内包表記を使用してリスト内にリストを格納し、外側のループの反復ごとにリスト [0, 1, 2] を作成しています。 range(5) の i をループします。

時間計算量: の上2) ネストされたループよりも高速です

補助スペース: の上)