Introduktion til Python Nested Loops

Velkommen til et andet kapitel i Python-læringskursus - Nested Loops. En god måde at sløjfe en loop, indlejrede loops har vist sig værd i hvert programmeringssprog. I dag fokuserer vi specifikt på Python - typerne, syntaks og eksemplerne. Så lad os komme i gang.

Indlejrede sløjfer

Det ville være godt at kort berøre basen på Nested Loops generelt, før du fortsætter med Python specifikt. Hvis der findes en løkke inde i kroppen af ​​en anden sløjfe, kaldes den Nested Loop. Dette betyder, at vi ønsker at udføre koden til den indre sløjfe flere gange. Den ydre sløjfe styrer, hvor mange iterationer den indre sløjfe vil gennemgå. Et grundlæggende eksempel på en indlejret for loop 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 at bemærke her er, at enhver type løkke kan indlejres i en anden løkke. For eksempel kan en stund-løkke indlejres i en for-loop eller vice versa.

Python nestede sløjfer

1) Indlejret for loop-syntaks

Den grundlæggende syntaks for en nestet til loop 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

Produktion:

Udførelsesflow

Lad os prøve at forstå udførelsesflowet for ovenstående program. I programmet brugte vi to iterationsvariabler i og j til at udskrive et mønster med stjerner.

Kompilatoren begynder med linje 1. Den støder på en for loop og en rækkefunktion. Afstandsfunktionen i Python udsender en iterable matrix med heltalsnumre fra 0 til det nummer, der er angivet i argumentet. Argumentnummeret er udelukket fra matrixen. I vores tilfælde genererer det en matrix (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10). Nu ved kompilatoren, at den skal udføre det næste sæt udsagn 10 gange.

Når den bevæger sig til linje 2, møder den en anden til loop- og rækkefunktion. Bemærk, at argumentet til denne intervalfunktion er en beregnet værdi af vores iterationsvariabel i. Så det genererer dynamisk matrix afhængigt af værdien af ​​i. Når i = 0, er matrixen tom. Når i = 1, er array (0). Når i = 2, er matrixen (0, 1) og så videre.

Så antallet af gange, linje 3 udføres direkte, afhænger af værdien af ​​i. Bemærk delenden = '' inline 3. Dette er for at forhindre, at Python udskriver en linjefodning efter hver stjerne. Vi vil kun have en linjefodning i slutningen af ​​enhver iteration af den ydre sløjfe. Vi har således udtrykkeligt udskrevet en linjefodring i linje 4 i vores kode.

Så lad os nu nøje undersøge enhver iteration af vores indlejrede for løkke.

Iteration af ydre sløjfe 1

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

Iteration af ydre sløjfe 2

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

Iteration af ydre sløjfe 3

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

Iteration af ydre sløjfe 4

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

.
.
.

Iteration af ydre sløjfe 10

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

Iteration af ydre sløjfe 11

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

2) Indlejret mens løkke

Syntaks

Syntaks for indlejring under løkken i Python er:

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

I modsætning til for-loop, har while-loop ikke en forudkompileret iterbar sekvens. Mens loop fortsætter med at udføre koden, indtil udtrykket evalueres til sandt. Så en udvikler skal altid huske at opdatere den itererende variabel / udtryk, ellers går løkken ind i uendelig eksekveringstilstand.

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

Produktion:

Udførelsesflow

Linie 1 i koden indstiller den ydre sløjfs iterationsvariabel til startværdien. Den næste linje er begyndelsen på den ydre mens løkke. Det har et udtryk i <= 5. Dette udtryk evalueres for ægte værdi efter hver iteration. Udførelsen går kun i løkken, hvis betingelsen er sand. Så snart betingelsen bliver falsk, afsluttes løkken.

Da den oprindelige værdi af I er 1, er betingelsen i linje 2 sand. Så flytter kompilatoren til linje 3 og indstiller vores indre sløjpes iteraterende variabel j til 5. Linie 4 har igen et stykke løkke med et udtryk, der evalueres til sandt. Så compilen udfører linje 5 og 6. Den bevæger sig derefter tilbage til linje 4 og evaluerer betingelsen. Hvis betingelsen er sand, kommer den igen ind i linje 5 og 6. Hvis betingelsen bliver falsk, afsluttes løkken, og de næste linjer, der skal udføres, er linje 7 og 8. Det samme følges for den ydre sløjfe.

Linie 6 og 7 er meget vigtige, da de opdaterer vores iterationsvariabel. Uden dem ville programstrømmen gå i uendelig eksekveringstilstand, da udtryk for mens loop altid ville resultere i sandhed.

Skal jeg bryde, fortsætte eller passere

Som med næsten alle andre programmeringssprog har Python også begrebet break and continue. Disse søgeord hjælper med at afslutte en hvilken som helst loop eller springe over en bestemt iteration af loopen. Python har også et andet nøgleord - pas. Lad os se på disse.

1) Pause

Break søgeordet angiver kompilatoren til at hoppe ud af en løkke og afslutte dens udførelse.

Eksempel

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

Produktion:

Programmet ovenfor bryder det indre for loop, hvis værdien af ​​I og j er ens. Det udfører ikke yderligere iterationer af løkken. Dette kan forstås yderligere med fortsætningserklæringen.

2) Fortsæt

Fortsæt-nøgleordet angiver kompilatoren for at springe den aktuelle iteration af løkken over og fortsætte med den næste iteration.

Eksempel

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

Produktion:

Bemærk, at det samme program, men med fortsat erklæring i stedet for pause, ikke afslutter loopudførelsen. Det springer kun over den aktuelle iteration.

3) Bestået

Passnøgleordet er interessant i Python. Det betyder simpelthen ikke noget. Den bruges, når kodeblokken er nødvendig syntaktisk, men du ønsker ikke, at nogen kommando skal udføres. Det fungerer simpelthen som en pladsholder.

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

Produktion:

Konklusion

Loops er strategisk meget vigtigt for at lære at udføre en opgave med minimale kodelinjer. Dette er kun en grundlæggende introduktion til sløjfer. Det anbefales at lege mere, blive kreativ og udforske loops potentiale yderligere.

Anbefalede artikler

Dette er en guide til Python nestede sløjfer. Her diskuterer vi Python nestede sløjfer med syntaks, eksempler, output og udførelsesflow. Du kan også se på den følgende artikel for at lære mere -

  1. Python Frameworks
  2. Sådan installeres Python
  3. Vejledning til sløjfer i Python
  4. Hvad er Java-interface?
  5. Forskellige typer loops med dens fordele
  6. Loops i VBScript med eksempler

Kategori: