logo

Python ugnezdene zanke

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

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)