Python-ohjelmointikielessä on kahdenlaisia silmukoita silmukalle ja kun silmukka . Näitä silmukoita käyttämällä voimme luoda sisäkkäisiä silmukoita Pythonissa. Sisäkkäiset silmukat tarkoittavat silmukan sisällä olevia silmukoita. Esimerkiksi while-silmukka for-silmukan sisällä, for-silmukka for-silmukan sisällä jne.
abs c koodi

Python sisäkkäiset silmukat
Python sisäkkäisten silmukoiden syntaksi:
Outer_loop-lauseke:
Inner_loop-lauseke:
Lauseke inner_loopin sisällä
Lauseke Outer_loopin sisällä
Python sisäkkäisiä silmukoita esimerkkejä
Esimerkki 1: Pythonin sisäkkäisten silmukoiden perusesimerkki
Python 3
x>=> [>1>,>2>]> y>=> [>4>,>5>]> for> i>in> x:> >for> j>in> y:> >print>(i, j)> |
>
>
Lähtö:
1 4 1 5 2 4 2 5>
Python 3
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> |
>
>
Aika monimutkaisuus: Päällä2)
Aputila: O(1)
Esimerkki 2: Kertotaulukon tulostaminen Pythonilla sisäkkäisillä silmukoille
Python 3
huomautukset kevätsaappaat
# 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>()> |
>
>
Lähtö:
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>
Aika monimutkaisuus: Päällä2)
Aputila: O(1)
Yllä olevassa esimerkissä otamme ulomman for-silmukan, joka kulkee 2:sta 3:een kertolaskutaulukolle 2 ja 3, ja sitten tuon silmukan sisällä otamme sisemmän for-silmukan, joka kulkee 1:stä 10:een sen sisällä, että tulostamme kertolaskua. taulukkoon kertomalla jokainen sisemmän silmukan iteraatioarvo arvolla iterointi ulkosilmukan arvo, kuten näemme alla olevassa lähdössä.
Esimerkki 3: Tulostus käyttämällä erilaisia sisäkkäisiä sisä- ja ulkosilmukoita
Python 3
# 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 ')> |
>
>
merkkijono verrattuna
Lähtö:
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>
Aika monimutkaisuus: Päällä2)
Aputila: O(1)
Tässä esimerkissä alustamme kaksi luetteloa joillakin merkkijonoilla . Tallenna lista2:n koko kohtaan 'list2_Size' käyttämällä len()-funktiota ja käyttämällä sitä while-silmukassa laskurina. Suorita sen jälkeen ulompi for-silmukka toista lista1 ja tuon silmukan sisällä suorita sisäinen while-silmukka toistaaksesi listan2:n kautta käyttämällä listaindeksointia, jonka sisällä tulostetaan jokainen lista2:n arvo jokaiselle lista1:n arvolle.
Break-lauseen käyttö sisäkkäisissä silmukoissa
Se on eräänlainen silmukan ohjauslause. Silmukassa voimme käyttää katkeaa lausunto poistuaksesi silmukasta. Kun käytämme silmukassa break-lausetta, se ohittaa loput iteraatiosta ja päättää silmukan. Ymmärretään se esimerkin avulla.
Koodi:
Python 3
# 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>()> |
>
>
Lähtö:
2 * 1 = 2 3 * 1 = 3 3 * 2 = 6>
Aika monimutkaisuus: Päällä2)
Aputila: O(1)
Yllä oleva koodi on sama kuin esimerkissä 2 Tässä koodissa käytämme katkeamislausetta sisäisen silmukan sisällä käyttämällä jos lausunto . Jos sisemmän silmukan sisällä 'i' on yhtä kuin 'j', sisempi silmukka päätetään eikä sitä suoriteta loput iteraatiosta, kuten voimme nähdä tulostaulukossa 3, tulostetaan enintään kaksi iteraatiota, koska seuraavassa iteraatiossa 'i' tulee yhtä kuin 'j' ja silmukka katkeaa.
Jatka-lauseen käyttäminen sisäkkäisissä silmukoissa
Jatka-käsky on myös eräänlainen silmukan ohjauskäsky. Se on juuri päinvastoin kuin break-lause. Continue-lause pakottaa silmukan siirtymään silmukan seuraavaan iteraatioon, kun taas break-lause päättää silmukan. Ymmärretään se koodin avulla.
Python 3
# 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>()> |
>
>
Lähtö:
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>
Aika monimutkaisuus: Päällä2)
Aputila: O(1)
Yllä olevassa koodissa käytämme break-lauseen sijaan jatka-lausetta. Tässä, kun 'i' tulee yhtä kuin 'j' sisäisessä silmukassa, se ohittaa loput sisäisen silmukan koodista ja hyppää seuraavaan iteraatioon, kuten näemme ulostulossa 2 * 2 = 4 ja 3 * 3 = 9 on ei tulosteta, koska siinä kohdassa 'i' tulee yhtä kuin 'j'.
Yksirivinen sisäkkäisiä silmukoita käyttäen luettelon ymmärtämistä
Monirivisten sisäkkäisten silmukoiden muuntamiseksi yhdeksi riviksi aiomme käyttää Listan ymmärtäminen Pythonissa . Listan ymmärtäminen sisältää hakasulkeet, jotka koostuvat lausekkeesta, joka suoritetaan kullekin elementille, ja for-silmukasta, joka toistuu luettelon jokaisen elementin yli.
Listan ymmärtämisen syntaksi:
tekstin kokoinen lateksi
uusi lista = [ lauseke (elementti) varten elementti sisään vanha lista jos kunto ]
Koodi:
Python 3
# 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)> |
>
>
Lähtö:
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]>
Yllä olevassa koodissa tallennamme luettelon luettelon sisälle käyttämällä luettelon ymmärtämistä luettelon ymmärtämisen sisäisessä silmukassa [j = j in range(3)], jotta saadaan luettelo [0, 1, 2] jokaiselle ulomman iteraatiolle. silmukka i:lle alueella (5).
Aika monimutkaisuus: Päällä2) Se on nopeampi kuin sisäkkäiset silmukat
Aputila: Päällä)