Introduksjon til Python Nested Loops

Velkommen til et annet kapittel i Python-læringskurset - Nested Loops. En fin måte å sløyfe loop på, har nestede løkker bevist at de er verdt i alle programmeringsspråk. I dag vil vi fokusere spesielt på Python - typene, syntaks og eksemplene. Så la oss komme i gang.

Nested Loops

Det ville være bra å kort berøre baserte Nested Loops generelt før du fortsetter med Python spesifikt. Hvis det finnes en løkke inne i kroppen til en annen sløyfe, betegnes den som Nested Loop. Dette betyr at vi ønsker å utføre den indre sløyfekoden flere ganger. Den ytre sløyfen styrer hvor mange iterasjoner den indre løkken vil gjennomgå. Et grunnleggende eksempel på en nestet for sløyfe er:

for (i=0; i<10; i++)
(
for (j=0; j<10; j++)
(
//This code will execute 100 times.
)
//This code will execute 10 times.
)

En ting å merke seg her er at enhver type sløyfe kan hekles inne i en annen sløyfe. For eksempel kan en stundsløyfe nestes inne i en for loop eller omvendt.

Python nestede løkker

1) Nøstet for loop-syntaks

Den grunnleggende syntaks for en nestet for sløyfe i Python er:

for (iterating_variable_1) in (sequence_1): #Outer Loop
for (iterating_variable_2) in (iterating_variable_1/sequence_2): #Inner Loop
(code to execute)

Eksempel

for i in range(11): #line 1
for j in range(i): #line 2
print('*', end='') #line 3
print('') #line 4

Produksjon:

Utførelsesflyt

La oss prøve å forstå utførelsesflyten for programmet ovenfor. I programmet brukte vi to iterasjonsvariabler i og j for å skrive ut et mønster av stjerner.

Kompilatoren begynner med linje 1. Den møter a for loop og en rekkevidde-funksjon. Områdefunksjonen i Python sender ut en iterable matrise med heltall fra 0 til tallet som er spesifisert i argumentet. Argumentnummeret er ekskludert fra matrisen. I vårt tilfelle vil det generere en matrise (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10). Nå vet kompilatoren at den må utføre neste sett med uttalelser 10 ganger.

Når den går til linje 2, møter den en annen for loop og rekkevidde funksjon. Legg merke til at argumentet til denne rekkeviddefunksjonen er en beregnet verdi av iterasjonsvariabelen vår. Så det genererer dynamisk matrise avhengig av verdien av i. Når i = 0, er matrisen tom. Når i = 1, er matrise (0). Når i = 2, er matrisen (0, 1) og så videre.

Så antall ganger linje 3 utføres direkte avhenger av verdien av i. Legg merke til delen end = '' linje 3. Dette er for å forhindre at Python skriver ut en linjefôr etter hver stjerne. Vi vil bare ha en linjefôr på slutten av hver iterasjon av den ytre sløyfen. Dermed har vi eksplisitt skrevet ut en linjeinnmating i linje 4 i koden vår.

Så nå, la oss nøye undersøke hver iterasjon av vår nestede for sløyfe.

Iteration for ytre sløyfe 1

I = 0, j = (), output is a blank line.

Iteration 2 for ytre sløyfe

I = 1, j = (0), output = *

Iteration for ytre sløyfe 3

I = 2, j = (0, 1), output = **

Iteration for ytre sløyfe 4

I = 3, j = (0, 1, 2), output = ***

.
.
.

Iteration for ytre sløyfe 10

I = 9, j = (0, 1, 2, 3, 4, 5, 6, 7, 8), output = *********

Iteration I Outer Loop 11

I = 10, j = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), output = **********

2) Nøstet mens sløyfen

syntax

Syntaksen for å hekke mens Python er sløyfe er:

while (expression_1): #Outer loop
(code to execute) #Optional
while (expression_2): #Inner loop
(code to execute)

I motsetning til for-loop har ikke loop-en en forhåndskompilert iterbar sekvens. Mens loop fortsetter å utføre koden til uttrykket evalueres til sant. Så en utvikler må alltid huske på å oppdatere den itererende variabelen / uttrykket, ellers sløyfen går inn i uendelig utførelsesmodus.

Eksempel

i=1 #line 1
while(i<=5): #line 2
j=5 #line 3
while(j>=i): #line 4
print(j, end=' ') #line 5
j-=1 #line 6
i+=1 #line 7
print() #line 8

Produksjon:

Utførelsesflyt

Linje 1 i koden setter den itererende variabelen til den ytre sløyfen til startverdien. Den neste linjen er begynnelsen på den ytre mens løkken. Det har et uttrykk i <= 5. Dette uttrykket blir evaluert for ekte verdi etter hver iterasjon. Utførelsen går inn i løkka bare hvis betingelsen er sann. Så snart tilstanden blir falsk, avsluttes løkken.

Siden startverdien på I er 1, er tilstanden i linje 2 sann. Så flytter kompilatoren til linje 3 og setter vår indre sløyfes iterasjonsvariabel j til 5. Linje 4 har igjen en stundsløyfe med et uttrykk som evalueres til sann. Så utfører kompilatoren linje 5 og 6. Den beveger seg deretter tilbake til linje 4 og evaluerer tilstanden. Hvis tilstanden er sann, kommer den igjen inn i linje 5 og 6. Hvis tilstanden blir falsk, avsluttes løkken og de neste linjene som skal utføres er linje 7 og 8. Det samme følges for den ytre sløyfen.

Linje 6 og 7 er veldig viktige da de oppdaterer den itererende variabelen. Uten dem ville programstrømmen gå i uendelig utførelsesmodus ettersom uttrykk for mens sløyfe alltid ville resultere i sannhet.

Skal jeg bryte, fortsette eller passere

Som med nesten alle andre programmeringsspråk, har også Python konseptet break and continue. Disse nøkkelordene hjelper til med å avslutte enhver loop eller hoppe over en bestemt iterasjon av løkken. Python har også et annet nøkkelord - pass. La oss ta en titt på disse.

1) Brudd

Bruddordet angir at kompilatoren skal hoppe ut av en loop og avslutte utførelsen.

Eksempel

for i in range(5):
for j in range(5):
if i == j:
break
print(j, end='')
print('')

Produksjon:

Programmet over bryter det indre for loop hvis verdien til I og j er lik. Det utfører ikke ytterligere iterasjoner av løkken. Dette kan forstås ytterligere med fortsettelsesuttalelsen.

2) Fortsett

Fortsett nøkkelordet indikerer kompilatoren for å hoppe over den gjeldende iterasjonen av løkken og fortsette med neste iterasjon.

Eksempel

for i in range(5):
for j in range(5):
if i == j:
continue
print(j, end='')
print('')

Produksjon:

Legg merke til at det samme programmet, men med fortsettelse i stedet for pause, ikke avslutter kjøringen av sløyfen. Den hopper bare over den nåværende iterasjonen.

3) Bestått

Passordsøkkelordet er interessant i Python. Det betyr rett og slett ikke å gjøre noe. Den brukes når kodeblokken er nødvendig syntaktisk, men du vil ikke at noen kommando skal utføres. Det fungerer ganske enkelt som en plassholder.

Eksempel

for i in range(5):
for j in range(5):
if i == j:
#I am not sure what to do when i equals j, so for now I will pass.
pass
print(j, end='')
print('')

Produksjon:

Konklusjon

Looper er strategisk veldig viktig for å lære å utføre en oppgave med minimale koder. Dette er bare en grunnleggende introduksjon til løkker. Det anbefales å leke mer, bli kreative og utforske potensialet til løkker videre.

Anbefalte artikler

Dette er en guide til Python Nested Loops. Her diskuterer vi Python Nested Loops med syntaks, eksempler, output og utførelsesflyt. Du kan også se på følgende artikkel for å lære mer -

  1. Python Frameworks
  2. Slik installerer du Python
  3. Guide to Loops in Python
  4. Hva er Java-grensesnitt?
  5. Ulike typer løkker med fordelene
  6. Looper i VBScript med eksempler