Iteratormetoder
Hvert iteratorobjekt inneholder følgende to metoder.
Denne metoden brukes til å initialisere det iterable objektet. Det returnerte objektet har metoden '_ _NEXT_ _ ()'I Python 3.
Denne metoden returnerer neste verdi av det iterable objektet. Forholdet mellom iteratoren og det iterable objektet vises i følgende diagram.
Iterere med løkker
Det ble nevnt tidligere at 'til'Loop ringer'Neste ()'Metode implisitt når det er iterende noe iterable objekt. Når en sløyfe brukes til å iterere et iterable objekt, 'til'Loop ringer'Neste ()'Metode implisitt og'samtidig som'Loop ringer'Neste ()'Eller'__NEXT __ ()'Metode eksplisitt for å lese neste verdi av det iterable objektet. Begge typer sløyfe kaller fortsatt denne metoden til 'StopIteration'Signal genereres.
Eksempel 1: itererende iterable objekter med 'for' loop
Følgende skript viser bruken av 'til'Løkker for å iterere fem forskjellige iterable gjenstander. Den første 'til'Loop brukes til å iterere strengverdien og skrive ut hvert tegn på strengen i hver iterasjon. Den andre 'til'Loop brukes til å iterere innholdet i en eksisterende tekstfil og skrive ut hver linje i filen i hver iterasjon. Den tredje 'til'Loop brukes til å iterere verdiene til en tupel. Den fjerde 'til'Loop brukes til å iterere verdiene i en liste. Den femte 'til'Loop brukes til å iterere verdiene i en ordbok.
# Iterere en streng som bruker for loopProduksjon
Følgende utgang viser at tegnene til strengverdien; linjene til test.tekst fil; og gjenstandene til tuplene, listen og ordboken skrives ut etter å ha kjørt manuset.
Eksempel 2: Itereringslister med 'While' Loop
Følgende skript viser bruken av en 'samtidig som'Loop for å iterere en liste over data. Her, 'iter ()'Metode brukes til å initialisere det iterable objektet, og'Neste ()'Metoden brukes til å lese neste verdi av det iterable objektet. StopIteration signal brukes til å avslutte fra det uendelige 'samtidig som' sløyfe når ingen gjenstander på listen igjen for lesing.
# Definer en listeProduksjon
Følgende utgang viser at hver verdi av listen er skrevet ut i hver linje ved å bruke 'Neste ()'Metode etter å ha kjørt skriptet.
Eksempel 3: iterere en tuple med '__Next __ ()' metode og 'while' loop
I det følgende skriptet, begge 'Neste ()'Og'__NEXT __ ()'Metoder brukes for å iterere verdiene til en tupel. 'iter ()'Metode brukes til å lage det iterable objektet, navngitt'init_iter.'Her, The'Neste ()'Metoden kalles to ganger for å skrive ut de to første verdiene til tupelen. Neste, en uendelig 'samtidig som'Loop brukes til å iterere de gjenværende verdiene til tupelen og'StopIteration'Signal brukes til å avslutte fra løkken, som i forrige eksempel.
# Definer en tupleProduksjon
Følgende utgang viser at etter å ha kjørt skriptet, de to første verdiene, 'Fugl'Og'Løve,'er trykt med'Neste ()'Metode, mens de tre andre verdiene,'Ape,""Slange,'Og'Elefant,'er trykt med'__NEXT __ ()'Metode.
Iterating med en tilpasset iterator
Denne delen viser hvordan forskjellige typer tilpassede iteratorer kan implementeres ved å lage klasser. Begge '__iter __ ()' og '__NEXT __ ()'Metoder vil bli implementert i en klasse, og'samtidig som'Loop vil bli brukt til å iterere verdiene til det iterable objektet. Den neste delen av denne artikkelen vil også vise hvordan du lager en uendelig tilpasset iterator og kontrollerer iterasjonen.
Eksempel 4: Bruk av en enkel tilpasset iterator
Følgende skript lar deg beregne verdien av xn Ved å bruke en tilpasset iterator uten å bruke noen innebygd funksjon av Python. Klassen som heter 'x_to_the_power_n'Er erklært i skriptet. '__i det__()'Metoden for klassen vil initialisere verdiene til x og n som vil bli brukt på tidspunktet for objektoppretting. '__iter __ ()'Metoden vil initialisere klassevariabelen, som vil lagre'resultat'Variabel av beregningen i hver iterasjon. Verdiene til x og n vil bli tatt som innspill fra brukeren. Et objekt av klassen 'tall'er opprettet med x og n. Neste, et iterable objekt som heter 'Iter_obj'er opprettet for å ringe'__NEXT __ ()'Metode for n-1 ganger ved å bruke 'samtidig som'Loop for å beregne verdien av xn. I hver iterasjon, verdien av x vil bli multiplisert med den forrige verdien av 'resultat'Variabel. Etter å ha avsluttet 'samtidig som'Loop, The'__NEXT __ ()'Metoden vil bli kalt igjen for å skrive ut verdien av xn.
"Lag en klasse for å beregneProduksjon
Følgende utgang viser det 2 blir tatt som verdien av x og 4 blir tatt som verdien av n. Så skriptet beregnet verdien av 24 å være 16.
Eksempel 5: Bruk av en uendelig tilpasset iterator
Følgende skript vil kontinuerlig skrive ut tallene som kan deles med 5 med en forsinkelse på ett sekund til brukeren trykker på Ctrl + c å generere 'Tastaturinterrupt'Signal. Den uendelige 'samtidig som'Loop brukes her for å lage en uendelig tilpasset iterator. 'tid'Modul importeres i begynnelsen av skriptet for å bruke'sove()'Metode for å utsette hver utgang i ett sekund. Nummer 5 initialiseres til 'Num'Variabel som det første delbare tallet i skriptet, og neste nummer genereres ved å legge til 5 med den forrige verdien av'Num'Variabel.
# Importer tidsmodulProduksjon
Følgende utgang viser at antallet begynte å skrive ut fra 5 og trykket kontinuerlig de neste tallene etter hverandre med en sekunds varighet. Når brukeren trykket på Ctrl + c Etter å ha skrevet ut nummeret 60, meldingen 'Ctrl+C er presset.'ble skrevet ut før du avsluttet manuset.
Eksempel 6: Kontrollere en tilpasset uendelig iterator
Følgende skript viser hvordan du stopper den tilpassede uendelige iteratoren etter å ha fullført et spesifisert antall iterasjoner. '__iter __ ()'Metoden for klassen vil initialisere verdiene til'n'Og'resultat'Klassevariabler. Skriptet vil beregne rutene på tallene, fra og med fra og med fra 1, som er lagret i variabelen n, og skriv inn kvadratverdien av n til verdien av n er større enn 5. En uendelig mens sløyfe er her erklært for å ringe '__NEXT __ ()'Metode for å skrive ut den kvadratiske verdien av n. Når verdien av n når 6, 'StopIteration'Signalet vil generere for å avslutte sløyfen.
# Importer tidsmodulProduksjon
Følgende utgang viser at den uendelige tilpassede iteratoren ble avsluttet når verdien av N ble større enn 5. Skriptet beregnet og trykte kvadratverdiene til tallverdiene fra 1 til 5.
Iterere med iterertools
Python har en innebygd modul som heter 'iterertools'Det kan brukes til å lage en iterator for iterasjonsdata ved hjelp av en loop. Den neste delen av denne artikkelen viser hvordan du bruker tre funksjoner i denne modulen.
iterertools.telle()
De 'iterertools.forts'Funksjon kan brukes med'kart()'Metode for å generere sekvensielle data og med'glidelås()'Metode for å legge til sekvenser ved å bruke telleparameteren til denne metoden. Syntaksen til denne funksjonen er gitt nedenfor.
Syntaks
iterertools.tell (start = 0, trinn = 1)Her, den første parameteren, 'start,'brukes til å definere startverdien til sekvensen, og 0 er standardverdien for denne parameteren. Den andre parameteren, 'steg,'brukes til å sette forskjellen mellom påfølgende tall, og 1 er standardverdien for denne parameteren.
Eksempel 7: Bruk av count () -funksjonen til iterertools
Følgende skript vil beregne summen fra 0 til n tall, der verdien av n vil bli hentet fra brukeren. 'telle()'Funksjon importeres fra'iterertools'I begynnelsen av manuset. 'my_iterator'Objekt initialiseres med'telle()'funksjon, med en'start'Verdien på 0 og A'steg'Verdi på 1. Neste, 'sum_result'Variabel initialiseres av den første verdien av det iterable objektet. Startverdien initialiseres til variabelen Jeg og startnummeret lagres som karakter i variabelen, tall som vil bli brukt til å kombinere andre tall i hver iterasjon. Verdiene for sekvensielle tall vil bli lagt til i hver iterasjon når 'Neste ()'Metoden kalles. Når verdien av Jeg blir større enn n, skriptet avsluttes ved å vise resultatet av summen.
"Følgende skript vil beregneProduksjon
Følgende utgang viser at tallet 10 blir tatt som inngangen som brukes til å avslutte sløyfen etter å ha kjørt skriptet. I denne utgangen har skriptet beregnet summen fra 0 til 10 og skrevet ut utgangen, 0+1+2+3+4+5+6+7+8+9+10 = 55.
Iterertools.syklus()
Denne funksjonen inneholder bare ett argument, som kan være et hvilket som helst objekt. Hensikten med denne funksjonen er å gjenta verdiene til objektet etter å ha fullført iterasjonen av alle verdier. Her, strenger, tuples, lister osv. kan brukes som et objekt. Den iterable objektreturene til denne funksjonen brukes til å iterere hver verdi av objektet som vil bli brukt som et argument ved å bruke 'Neste ()'Metode. Antall ganger verdiene til det iterable objektet vil være basert på antall iterasjoner av løkken. Syntaksen til denne funksjonen er gitt nedenfor.
Syntaks
iterertools.syklus (objekt)Eksempel 8: Bruk av syklus () -funksjonen til iterertools
'tilfeldig'Og'iterertools'Moduler importeres i starten av skriptet for å generere et tilfeldig tall og for å bruke'syklus()'Funksjon fra'iterertools'Modul for å gjenta dataene. En liste over tre tilfeldige tall brukes som argumentet for 'syklus()'Funksjon. Det iterable objektet som heter 'num_list'blir initialisert av returverdien til denne funksjonen. 'telle'Variabel initialiseres til 0, og når verdien av denne variabelen blir 6, 'samtidig som'Loop vil avslutte. Så 'samtidig som'Loop vil iterere seks ganger, og hver verdi av listen vil bare gjenta en gang.
# Importer tilfeldig modulProduksjon
Følgende utgang viser at tre tilfeldige tall, 3, 17, og 185, har blitt generert som listeartikler. Løkken er iterert seks ganger, og disse tre verdiene gjentas for neste iterasjoner.
Iterertools.gjenta()
'Repeat ()' -funksjonen fungerer som en uendelig iterator og kan ta to argumenter. Når det andre argumentet er utelatt, fungerer 'repetisjon ()' -funksjonen som en uendelig iterator og gjentar verdien et uendelig antall ganger. Denne funksjonen okkuperer ikke minne for hver gjentakelse. Det oppretter bare variabelen en gang i minnet og gjentar den samme variabelen et uendelig antall ganger når bare ett argument er satt for denne funksjonen. Syntaksen til denne funksjonen er gitt nedenfor.
Syntaks
iterertools.Gjenta (verdi, grense)Det første argumentet brukes til å ta verdien som vil gjenta. Det andre argumentet er valgfritt og brukes til å sette grensen for repetisjoner.
Eksempel 9: Bruk av repetisjon () -funksjonen til iterertools -modulen
'iterertools'Modul importeres i starten av skriptet for å bruke'gjenta()'Funksjon. En strengverdi vil bli tatt fra brukeren for å gjenta, og en tallverdi vil bli tatt fra brukeren for å angi gjenta grensen. Returverdien til 'gjenta()'Funksjon vil deretter bli konvertert til en liste med'liste()'Metode og lagret i'ListData'Variabel. Verdiene til 'ListData'vil bli skrevet ut med'til' Løkke.
# Importer iterertools -modulProduksjon
Følgende utgang viser det 'Python'blir tatt som strengverdien, og 3 blir tatt som tallet som ble brukt til å gjenta strengverdien etter å ha kjørt skriptet. Utgangen viser at strengen 'Python'gjentas tre ganger.
Konklusjon
Konseptet med iterator og bruken av forskjellige typer iteratorer i Python er prøvd å forklare med de veldig enkle eksemplene i denne artikkelen. Python-brukere kan bruke en innebygd iterator eller kan lage sin tilpassede iterator basert på kravet. Denne artikkelen vil hjelpe Python -brukerne til å vite om metodene som brukes i iteratoren og hvordan disse metodene fungerer med hvilken som helst løkke for å lese ethvert iterable objekt. Noen bruksområder av iterertools Python -modul forklares også i denne artikkelen for å vite flere detaljer om iteratoren i Python.