I datalogi er en for loop brugt tilat udføre den samme type handling mange gange. Tag f.eks. Et produkt fra listen en efter en, iterere over numrene i et bestemt interval og udfør det tilsvarende script for hver af dem.
I modsætning til når den er den mest anvendte løkke. Begge indstillinger findes på alle programmeringssprog. På et antal sprog er det syntaktisk og semantisk identisk.
I python består en for loop af:
I modsætning til C-lignende sprog er instruktioner ikkeadskilt af krøllede seler {}. For at gøre dette skal du bruge operatøren “:” efter blokeringsforhold og tabulering i cyklusens krop. Uden fanebladindrykning mislykkes koden, og der vises en fejl.
Fortsæt, bryt, pass bruges som yderligere operatører - pegepunkter til at springe over iteration, slutning af løkken, springe over iteration. De vises efter blokken af nogle betingelser, hvis ellers.
Denne løkke bruges til at itereere over alle elementer i samlingen. Indstil i formatet
for variabel på listen: sætning
Det minder om foreach loop fra C ++
foreach (type element i sæt) {}; for jeg i "hej verden": print (i * 2, end = "") hheelllloo wwoorrlldd
I Python er for-loopen samarbejdende - instruktionerne i kroppen udføres for hvert medlem af listen uden eksplicit at specificere sekvensen. Instruktionerne udføres i den mest optimale rækkefølge.
Variablen i er tildelt hvert objekt frakollektion. Elementerne p
list_of_lists = [["hammerhead", "great white", "dogfish"], [0, 1, 2], [9.9, 8.8, 7.7]] til liste i liste_of_lister: print (liste) ["hammerhead", "great white", "dogfish"] [0, 1, 2] [9,9, 8,8, 7,7]
For at få vist hvert element i en indlejret matrix, skal du bruge indlejrede sløjfer.
Operatøren giver dig mulighed for at springe over en del af for-loopen oggå til næste iteration. Dette gøres, når der opstår en ekstern faktor. Fortsæt specificeres efter den yderligere if-blok, men selve betingelsen er inde i løkken før hovedopgørelsen.
antal = 0 for antal inden for rækkevidde (10): tal = tal + 1 hvis nummer == 5: fortsæt # her er fortsætningserklæringen print (str (antal)) print ("Slut")
Hvert nummer i en liste over værdier fra 0 til 10trinvis øger variablen, som oprindeligt er nul. Når nummeret er indstillet til 5, slutter løkken og den næste iteration begynder. Det viser sig:
1 2 3 4 6 7 8 ni ti Ende
Operatøren bruges i forbindelse med if-tilstanden. Dette design afbryder cyklussen fuldstændigt, når der opstår en eller anden faktor.
antal = 0 for antal inden for rækkevidde (10): nummer + = 1 hvis nummer == 5: pause # pause print ("Antal =" + str (antal)) print ("Out of loop")
Her definerer if-sætningen betingelsen: hvis værdien af variabeltallet er 5, afsluttes løkken. På hver iteration udføres den første print () -metode og viser en anmeldelse
Antal = 5.
Når sløjfen stoppes af en pauseanvisning, udføres den næste udskrivningsmetode () -metode.
Et andet eksempel kontrollerer, om det andet tal kan deles med det første uden en rest.
for n inden for rækkevidde (2, 10): for x inden for rækkevidde (2, n): hvis n% x == 0: udskriv (n, "er lig", x, "*", n // x) pause andet: # loop faldt igennem uden at finde en faktor print (n, "er et primtal")
I dette tilfælde bruges en indlejret løkke. Først tages alle termer fra et sæt numre i området fra 2 til 10 som n. For hver n defineres en ny liste med elementer fra 2 til n. Vi har således 8 matriser i forskellige længder. Alle elementer fra de resulterende samlinger er specificeret af x-variablen. Nu-betingelsen kontrollerer, at resultatet af n / x er en heltalværdi. Hvis det er sandt, går løkken i stykker og viser en meddelelse på skærmen. Hvis n / x er divideret med resten, vises en anden meddelelse.
Operatøren er nødvendig for at ignorere yderligere betingelser.
antal = 0 for antal inden for rækkevidde (10): nummer + = 1 hvis nummer == 5: passere print (str (antal)) print ("Slut")
Programmet fungerer som om betingelsen, hvis nummer == 5 ikke findes. Skærmen vises
1 2 3 4 fem 6 7 8 ni ti Ende
Vi ser det under udførelsen af passoperatørenintet sker. Det bruges kun som en stub, hvor det er syntaktisk nødvendigt. For eksempel når man udvikler en ny klasse med metoder, der ikke behøver at blive implementeret.
klasse MyClass (objekt): def meth_a (selv): passere def meth_b (selv): tryk "I" m meth_b "
Meth_a-funktionen har endnu ikke sin egen instruktion. Men Python kræver, at undtagen def, klasseblokke med kode ikke skal være tomme. Ellers vises en fejlmeddelelse.
IndenterError: forventede en indrykket blok.
Du kan angive pass i stedet.
klasse CompileError (undtagelse): passere
Et andet formål med at bruge passerklæringen er eksplicit at sige at ikke gøre noget.
Dette kan ses i et andet eksempel på en for- og pas-loop:
for t inden for rækkevidde (25): gør (t) hvis t == 20: passere
Dette kodestykker gentages over listepunkternefra 0 til 25. De behandles som variabel t. Ved hver iteration udføres nogle do () -funktioner. Hvis du overhovedet ikke ønsker, at der skal ske noget værdi, specificeres pass. F.eks. Udskriver do-funktionen meddelelsen 24 gange og springer instruktionen over ved t = 20.
For programmer, der hjælper dig med at oprette en række af værdier og tildele dem til variabler.
Følgende registrering er mulig:
for i i [0, 1, 2, 3, 4, 5]: tryk i ** 2
Hvis listen havde flere elementer, ville det være mere rationelt at oprette en separat matrix.
array = [1, 2, 3, 4, 5, 6, 7, 8, 9] for i matrix: tryk i
Sådan oprettes lister som
array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
, Python har en rækkevidde () -funktion. Metoden rækkevidde () tager tre argumenter i parameterområdet: startværdi, slutværdi, trin. Kun det sidste element på listen er påkrævet. Område (5) betyder således, at matrixen inkluderer tal fra 0 til 5. Hvis et trin er specificeret, skal startelementet også bestemmes.
rækkevidde (0, 10, 2)
Vi får:
0, 2, 4, 6, 8, 10
Arbejde med sådanne lister ligner numeriske lister. For eksempel er der en liste
farver = ["rød", "grøn", "blå", "gul"]
Udviklere, der er vant til C, kan skrive følgende funktion.
for i inden for rækkevidde (len (farver)): trykfarver [i]
Koden kører uden fejl, men en mere korrekt brug af for-loop ser sådan ud:
farver = ["rød", "grøn", "blå", "gul"] til farve i farver: udskriv farve
Hvis du er nødt til at iterere gennem listen fra sidste til nul, bruges funktionen omvendt ().
farver = ["rød", "grøn", "blå", "gul"] for farve i omvendt (farver): udskriv farve
Følgende indlæg er forkert. Igen kom en lignende ting fra C-sproget.
Python leverer indbyggede enumerate () funktioner til at manipulere matrixindekser. De er praktiske at bruge i python til sløjfer.
En række værdier tages som argumenter. Funktionen tæller () gør det nemt at bruge følgende kode:
for i inden for rækkevidde (len (L)): vare = L [i] # ... beregne noget resultat baseret på varen ...
Len () -metoden bruges her. Det returnerer antallet af elementer, i dette tilfælde array L. En masse elementer accepteres som et argument til funktionen rækkevidde (). Således definerer vi listen [0, ... n].
Ved hjælp af L [i] får vi adgang til hvert element i matrixen L.
L [0], L [1], L [2] osv.
Funktionen tæller () eliminerer behovet for at initialisere tællervariablen b og gør det lettere at skrive til
for tæller, værdi i tæller (L): print ("indeks:" tæller, "værdi:" værdi) "
Enumerate () returnerer et modpostpar, så to variabler er specificeret med for loop-sætningen.
Funktionerne elementer () og iteritems () er ens og bruges som metoder.
d.items () d.iteritems ()
Når du skal bruge medlemmer af flere lister, bruges funktionen zip ().
Den tager liste A og liste B og laver et enkelt zip-objekt ud af dem, der indeholder indlejrede tupler. Hvert element i det nye objekt slutter sig til medlemmerne af lister A og B og sorterer dem efter indeks.
zip_object [1] = [A [1], B [1]];
Hvis zip () -indgangen specificerer 4 arrays,zip array-elementer vil hver indeholde 4 elementer. Pakningssæt i forskellige længder kaster ikke en fejl. Kun de elementer, der indeholder et værdipar, placeres i det nye objekt.
Zip_longest () bruges til at inkludere hvert element i en tuple, også et uden et par.
liste (itertools.zip_longest ((1,2,3), [4])) # [(1, 4), (2, Ingen), (3, Ingen)]
Når det ikke kun er nødvendigt at gennemgå elementerne i en matrix, men at ændre den, bruges tasterne () -funktionen.
Metoden duplikerer og returnerer en liste over tilgængelige ordbogstaster.
for k in d.keys (): hvis k.startswith ("R"): del d [k]
Der er en matrix d. Dens elementer kopieres ved hjælp af metoden nøgler (). Hvert element er en variabel k. Det behandles ved hjælp af startswith, hvis det matcher, fjernes elementet fra hovedgruppen.
startswith () returnerer et flag, der kontrollerer, om strengen starter med den specificerede præfiks. Funktionen har tre argumenter: præfiks, start, slut.
str.startswith (præfiks [, start [, slut]]) -> bool
Kun det første kræves - præfiks. Det kan være en streng eller en tuple.
my_str.startswith ('værdi')
eller
my_str.startswith (('værdi1', 'værdi2'))
Hvis der kræves flere linjer i parameterfeltet, indpakkes elementerne i yderligere parenteser ().
Startargumentet peger på indekset for elementet medsom nedtællingen begynder. Positive og negative værdier understøttes. Hvis start = -x, starter søgningen fra slutningen af elementet ved indeks x. Slutparameteren angiver det sidste tegn, hvorved parring af strengen skal stoppes. Det understøtter også negative værdier. Med end = -x, det sidste medlem af listen ved indeks x fra begyndelsen.
Funktionen Ende med () fungerer analogt med start med (). Den kontrollerer, om strengen slutter med det specificerede postfix. Det har tre parametersuffiks, start, slut og returnerer også en boolesk værdi.
Hvis du har brug for at forbinde elementer fra to arrays,den hurtigste måde er at bruge dikteren (izip (array 1, matrix 1)) -gruppe metoder. I dette tilfælde er elementerne ikke arrangeret efter hinanden, men i form:
'Array element 1': 'array element 2'
names = ["raymond", "rachel", "matthew"] farver = ["rød", "grøn", "blå"] d = dict (lynlås (navne, farver)) # {"matthew": "blue", "rachel": "green", "raymond": "red"}
Metoden dict () opretter en ordbog, indeni hvilkenværdier er placeret på ovenstående måde - gennem “:”. Elementet i array 2 bruges som hovedværdi. For at kalde det skal du henvise til det efter indeks - værdien af array 1.
d ['raymond'] #rød
Funktionen get () bruges til at finde ud af, hvor mange elementer en liste består af.
d.get (nøgle, standard = Ingen)
Denne metode kontrollerer ordbogen d for tilstedeværelsen af nøgle og returnerer indeksetasten [indeks].
farver = ["rød", "grøn", "rød", "blå", "grøn", "rød"] d = {} til farve i farver: d [farve] = d.get (farve, 0) + 1
Get () -metoden er en mere praktisk og hurtigere analog til følgende kode.
farver = ["rød", "grøn", "rød", "blå", "grøn", "rød"] d = {} til farve i farver: hvis farve ikke er i d: d [farve] = 0 d [farve] + = 1
Dette er grundlæggende eksempler og mulige fejl i for-loopen.