V programskem jeziku Python obstajata dve vrsti zank za zanko in medtem ko zanka . Z uporabo teh zank lahko ustvarimo ugnezdene zanke v Pythonu. Ugnezdene zanke pomenijo zanke znotraj zanke. Na primer, zanka while znotraj zanke for, zanka for znotraj zanke for itd.
niz nadomesti vso javo

Python ugnezdene zanke
Sintaksa ugnezdenih zank Python:
Izraz zunanje_zanke:
Izraz notranje_zanke:
Stavek znotraj notranje_zanke
Izjava znotraj Outer_loop
Primeri ugnezdenih zank Python
Primer 1: Osnovni primer ugnezdenih zank Python
Python3
x>=> [>1>,>2>]> y>=> [>4>,>5>]> for> i>in> x:> >for> j>in> y:> >print>(i, j)> |
>
>
Izhod:
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> |
>
>
Časovna zapletenost: O(n2)
Pomožni prostor: O(1)
Primer 2: Tiskanje tabele množenja z uporabo ugnezdenih zank for Python
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>()> |
>
uporabe operacijskega sistema
>
Izhod:
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>
Časovna zapletenost: O(n2)
Pomožni prostor: O(1)
V zgornjem primeru vzamemo zunanjo zanko for, ki teče od 2 do 3 za tabelo množenja 2 in 3, nato pa znotraj te zanke vzamemo notranjo zanko for, ki bo potekala od 1 do 10, znotraj katere tiskamo množenje tabelo z množenjem vsake iteracijske vrednosti notranje zanke z ponovitev vrednost zunanje zanke, kot vidimo v spodnjem rezultatu.
Primer 3: Tiskanje z uporabo različnih notranjih in zunanjih ugnezdenih zank
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 ')> |
>
>
e r primeri modelov
Izhod:
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>
Časovna zapletenost: O(n2)
Pomožni prostor: O(1)
V tem primeru inicializiramo dva seznama z nekaj nizi. Shranite velikost list2 v 'list2_Size' s funkcijo len() in jo uporabite v zanki while kot števec. Po tem zaženite zunanjo zanko for ponovite seznam1 in znotraj te zanke zaženite notranjo zanko while za ponavljanje seznama2 z uporabo indeksiranja seznama, znotraj katerega natisnemo vsako vrednost seznama2 za vsako vrednost seznama1.
Uporaba stavka break v ugnezdenih zankah
Je vrsta stavka za nadzor zanke. V zanki lahko uporabimo izjava o prekinitvi za izhod iz zanke. Ko v zanki uporabimo prekinitveni stavek, ta preskoči preostanek ponovitve in prekine zanko. razumejmo to na primeru.
Koda:
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>()> |
>
>
Izhod:
2 * 1 = 2 3 * 1 = 3 3 * 2 = 6>
Časovna zapletenost: O(n2)
Pomožni prostor: O(1)
Zgornja koda je enaka kot v primeru 2. V tej kodi uporabljamo prekinitveni stavek znotraj notranje zanke z uporabo izjava if . Znotraj notranje zanke, če 'i' postane enak 'j', bo notranja zanka prekinjena in ne bo izvedena, preostali del ponovitve, kot lahko vidimo v izhodni tabeli 3, je natisnjen do dveh ponovitev, ker je v naslednji ponovitvi 'i' postane enak 'j' in zanka se prekine.
Uporaba stavka za nadaljevanje v ugnezdenih zankah
Stavek za nadaljevanje je tudi vrsta stavka za nadzor zanke. Je ravno nasprotno od izjave o prelomu. Stavek continue prisili zanko, da skoči na naslednjo ponovitev zanke, medtem ko stavek break prekine zanko. Razumejmo to z uporabo kode.
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>()> |
>
>
Izhod:
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>
Časovna zapletenost: O(n2)
Pomožni prostor: O(1)
V zgornji kodi namesto stavka break uporabljamo stavek continue. Tukaj, ko 'i' postane enak 'j' v notranji zanki, preskoči preostanek kode v notranji zanki in skoči na naslednjo ponovitev, kot vidimo v izhodu 2 * 2 = 4 in 3 * 3 = 9 je ni natisnjeno, ker na tej točki 'i' postane enak 'j'.
Enovrstične ugnezdene zanke z uporabo seznamskega razumevanja
Za pretvorbo večvrstičnih ugnezdenih zank v eno vrstico bomo uporabili razumevanje seznamov v Pythonu . Razumevanje seznama vključuje oklepaje, sestavljene iz izraza, ki se izvede za vsak element, in zanke for za ponavljanje vsakega elementa na seznamu.
Sintaksa za razumevanje seznama:
newList = [ izraz (element) za element v oldList če stanje ]
Koda:
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)> |
binarno drevo proti bst
>
>
Izhod:
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]>
V zgornji kodi shranjujemo seznam znotraj seznama z uporabo razumevanja seznama v notranji zanki razumevanja seznama [j za j v obsegu (3)], da naredimo seznam [0, 1, 2] za vsako ponovitev zunanjega zanka za i v območju (5).
Časovna zapletenost: O(n2) Je hitrejši od ugnezdenih zank
Pomožni prostor: O(n)