V programovacom jazyku Python existujú dva typy slučiek pre slučku a pričom slučka . Pomocou týchto slučiek môžeme vytvárať vnorené cykly v Pythone. Vnorené slučky znamenajú slučky vo vnútri slučky. Napríklad slučka while vo vnútri slučky for, slučka for vnútri slučky for atď.
konverzia int na reťazec

Vnorené slučky Pythonu
Syntax vnorených slučiek Pythonu:
Outer_loop Expression:
Výraz vnútornej slučky:
Vyhlásenie vnútri inner_loop
Vyhlásenie vnútri Outer_loop
Príklady vnorených slučiek v Pythone
Príklad 1: Základný príklad vnorených slučiek Python
Python3
x>=> [>1>,>2>]> y>=> [>4>,>5>]> for> i>in> x:> >for> j>in> y:> >print>(i, j)> |
>
>
Výkon:
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> |
>
>
Časová zložitosť: O(n2)
Pomocný priestor: O(1)
Príklad 2: Tlač tabuľky násobenia pomocou vnorených slučiek for Python
Python3
vrhnúť do struny
# 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>()> |
>
>
Výkon:
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>
Časová zložitosť: O(n2)
Pomocný priestor: O(1)
Vo vyššie uvedenom príklade urobíme vonkajšiu slučku for spustenú od 2 do 3 pre tabuľku násobenia 2 a 3 a potom vo vnútri tejto slučky vezmeme vnútornú slučku for, ktorá bude prebiehať od 1 do 10, vo vnútri ktorej tlačíme násobenie. tabuľky vynásobením každej hodnoty iterácie vnútornej slučky s iteráciu hodnotu vonkajšej slučky, ako vidíme na výstupe nižšie.
Príklad 3: Tlač pomocou rôznych vnútorných a vonkajších vnorených slučiek
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 ')> |
>
>
java math.random
Výkon:
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>
Časová zložitosť: O(n2)
Pomocný priestor: O(1)
V tomto príklade inicializujeme dva zoznamy s niekoľkými reťazcami . Uložte veľkosť zoznamu2 do „list2_Size“ pomocou funkcie len() a použite ju v slučke while ako počítadlo. Potom spustite vonkajšiu slučku for iterovať cez zoznam1 a vo vnútri tohto cyklu spustite vnútornú slučku while na iteráciu cez zoznam2 pomocou indexovania zoznamov, v ktorom vytlačíme každú hodnotu zo zoznamu2 pre každú hodnotu zo zoznamu1.
Použitie príkazu break vo vnorených slučkách
Je to typ príkazu riadenia slučky. V slučke môžeme použiť vyhlásenie o prerušení vyjsť zo slučky. Keď použijeme príkaz break v slučke, preskočí zvyšok iterácie a cyklus sa ukončí. pochopme to na príklade.
kód:
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>()> |
>
>
Výkon:
2 * 1 = 2 3 * 1 = 3 3 * 2 = 6>
Časová zložitosť: O(n2)
Pomocný priestor: O(1)
Vyššie uvedený kód je rovnaký ako v príklade 2 V tomto kóde používame príkaz break vo vnútornej slučke pomocou príkazu ak vyhlásenie . Ak sa vo vnútornej slučke „i“ rovná „j“, vnútorná slučka sa ukončí a nevykoná sa zvyšok iterácie, ako môžeme vidieť vo výstupnej tabuľke 3, vytlačí sa až dve iterácie, pretože v ďalšej iterácii „i“ sa rovná „j“ a slučka sa preruší.
Použitie príkazu continue vo vnorených slučkách
Príkaz continue je tiež typ príkazu riadenia slučky. Je to pravý opak príkazu break. Príkaz continue núti cyklus skočiť na ďalšiu iteráciu cyklu, zatiaľ čo príkaz break ukončí cyklus. Poďme to pochopiť pomocou kódu.
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>()> |
>
>
Výkon:
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>
Časová zložitosť: O(n2)
Pomocný priestor: O(1)
Vo vyššie uvedenom kóde namiesto použitia príkazu break používame príkaz continue. Keď sa „i“ rovná „j“ vo vnútornej slučke, preskočí zvyšok kódu vo vnútornej slučke a preskočí na ďalšiu iteráciu, ako vidíme vo výstupe 2 * 2 = 4 a 3 * 3 = 9 je nevytlačí sa, pretože v tomto bode sa „i“ rovná „j“.
Jeden riadok Vnorené slučky pomocou porozumenia zoznamu
Ak chcete previesť viacriadkové vnorené slučky na jeden riadok, použijeme porozumenie zoznamu v Pythone . Porozumenie zoznamu zahŕňa zátvorky pozostávajúce z výrazu, ktorý sa vykonáva pre každý prvok, a cyklu for na iteráciu každého prvku v zozname.
Syntax porozumenia zoznamu:
čo je desktop ini
novýZoznam = [ výraz (prvok) pre element v oldList ak stave ]
kód:
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)> |
>
>
Výkon:
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]>
Vo vyššie uvedenom kóde ukladáme zoznam do zoznamu pomocou porozumenia zoznamu vo vnútornej slučke porozumenia zoznamu [j pre j v rozsahu (3)], aby sme vytvorili zoznam [0, 1, 2] pre každú iteráciu vonkajšieho slučka pre i v rozsahu (5).
Časová zložitosť: O(n2) Je rýchlejší ako vnorené slučky
Pomocný priestor: O(n)