Python ugnezdene zanke

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.

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(n 2 )

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> ()>

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(n 2 )

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 ')>

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(n 2 )

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(n 2 )

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(n 2 )

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)>

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(n 2 ) Je hitrejši od ugnezdenih zank

Pomožni prostor: O(n)