„Python Iterators“: kas yra „Pyter“ „Iterator“ ir kaip jį naudoti?



Šiame „Python“ iteratorių tinklaraštyje atliksime išsamų „Python“ iteratorių tyrimą ir jų įgyvendinimą.

„Python“ programavimo kalba išplėtė kiekvieną naujovės aspektą, įskaitant , , Viena iš daugelio šio žygdarbio priežasčių yra tokios sąvokos kaip „Python Iterators“, tokios sąvokos kaip „Python“ kaip programavimo kalbos triumfo pagrindas. Šiame straipsnyje apžvelgsime šias sąvokas, kad suprastume „Python Iterators“:

Iteratoriai ir kartojami

Objektas „Python“, kurį galima naudoti kaip „Iterable“ objektą, vadinamas „Iterable“. Tai iš esmės reiškia, kad objekto seka gali būti kartojama. Daugumai „Python“ kolekcijų patinka a sąrašą , , dvipusis , rinkiniai , Ir netgi diapazonas gali būti traktuojamas kaip kartojamas.



Kas yra „Python“ iteratoriai?

„Python I“ teratorius yra talpykla, kurioje yra daugybė verčių. Konteinerio vertes galima pereiti naudojant „Iterators“ - ypač sąrašus.

Be perėjimo, „Iterators“ taip pat suteikia prieigą prie konteinerio duomenų elementų, tačiau pats neveikiakartojimasy., ne be tam tikros reikšmingos laisvės, prisiimtos su ta sąvoka ar nereikšmingai vartojant terminologiją. Iteratorius yra beveik panašus į aduomenų bazės žymekliselgesyje. Čia yra paprastas „Iterator“ pavyzdys .



my_obj = {'Edureka', 'Python', 'iterator'} iter_obj = iter (my_obj) spausdinti (kitas (iter_obj))

Išvestis: Edureka

„Iterator“ yra bet koks „Python“ tipas, kurį galima naudoti su „for in loop“.Bet koks objektas, kuris bus naudojamas kaip iteratorius, turi įgyvendinti šiuos metodus.

iteratoriai pitone - edureka



1. __iteris __ ()

Jis vadinamas „Iterator“ inicijavimu.Jis turėtų grąžinti objektą, kuriam taikomas kitas arba __next__ metodas.

2. __ kitas __ ()

Kitas „Iterator“ metodas pateikia kitą „Iterable“ vertę.

Kai iteratorius naudojamas su „už“ kilpa, netiesiogiai iškviečiamas kitas () ant Iteratoriaus objekto. Šis metodas turėtų naudoti StopIteration, kad būtų rodoma iteracijos pabaiga.Šie du metodai kartu vadinami „Iterator“ protokolu. Pabandykime pavyzdžiu suprasti, kaip „for loop“ veikia kaip „Iterator“ programoje „Python“.

i objekte: spausdinti (i)

Leiskite mums suprasti, kaip ciklas veikia kaip iteratorius.

# sukurkite iteratoriaus objektą iš iterable iter_obj = iter (iterable) # begalinis ciklas, o True: pabandykite: # gauti kitą elemento elementą = kitas (iter_obj) # padaryti ką nors su elementu, išskyrus StopIteration: # jei StopIteration yra pakeltas, pertraukite nuo kilpos pertrauka

Dabar, kai žinome, kaip už kilpą dirba iteratoriumi. Leiskite mums suprasti, kaip mes galime įdiegti pritaikytus „Iterators“ „Python“.

Individualūs iteratoriai

Dabar pažvelkime, kaip galime pritaikyti „Python“ pritaikytus „Iterators“. Norėdami tai suprasti, naudosime pavyzdį. Šiame pavyzdyje įgyvendinsime metodus __iter __ () ir __next __ ().

klasė „MyNumbers“: def __iter __ (savarankiškai): self.a = 1 grąžinti save def __next __ (self): x = self.a self.a + = 1 return x myclass = MyNumbers () myiter = iter (myclass) spausdinti (kitas ( myiter)) print (kitas (myiter)) print (kitas (myiter))

Išvestis: vienas

2

3

Dabar, kai žinome, kaip galime pritaikyti įprastus „Iterators“, pažvelkime į begalinius „Python“ iteratorius.

Begaliniai kartotojai

Ne visada privaloma, kad „Iterator“ objekte esantis daiktas būtų išeikvotas. Gali būti begalinis kartotojų (kurie niekada nesibaigia). Čia yra pagrindinis pavyzdys, kaip parodyti begalinius kartotojus.

Įmontuotas kartoti ()galima iškviesti dviem argumentais, kur pirmasis argumentas turi būti objektas (funkcija), kurį galima iškviesti, o antrasis yra sargybinis. „Iterator“ iškviečia šią funkciją, kol grąžinama vertė tampa lygi sargybinei.

Paimkime pavyzdį, kad tai suprastume

klasė „MyNumbers“: def __iter __ (savarankiškai): self.a = 1 grąžinti save def __next __ (self): x = self.a self.a + = 1 return x myclass = MyNumbers () myiter = iter (myclass) spausdinti (kitas ( myiter)) print (kitas (myiter)) print (kitas (myiter)) print (kitas (myiter)) print (kitas (myiter))

Išvestis: vienas
2
3
4
5

Ankstesniame pavyzdyje vykdymas tęsis tol, kol mes nuolat pridėsime spausdinimo ataskaitą. Norėdami sustabdyti begalinius iteratorius, turime naudoti stopIteration sakinį.

kas yra skaitytuvo objektas

StopIteration

Norėdami sustabdyti kartojimą visam laikui, mes naudojame StopIteration teiginį. Supraskime tai su keliais pavyzdžiais.

class ManoNumeriai: def __iter __ (savarankiškai): self.a = 1 grąžinti save def __next __ (self): jei self.a & ampampamplt = 5: x = self.a self.a + = 1 return x else: pakelti StopIteration myclass = MyNumbers () myiter = iter (myclass) x x myiter: spausdinti (x)

Išvestis: vienas
2
3
4
5

Dabar, kai tik sąlyga yra klaidinga, vykdymas bus perkeltas į kitą bloką ir iteracija sustos. Dabar pažvelkime į keletą kitų „Python“ iteratorių pavyzdžių.

„Python Iterator“ pavyzdžiai

Čia yra dar keli „Python“ iteratorių pavyzdžiai.

my_obj = ['Edureka', 'python', 'iterator'] iter_obj = iter (my_obj) spausdinti (kitas (iter_obj))

Išvestis: Edureka

Šiame pavyzdyje „Tuple“ naudojame kaip kartojamą objektą.

my_obj = ('Edureka', 'python', 'iterator') iter_obj = iter (my_obj) spausdinti (kitas (iter_obj))

Išvestis: Edureka

Mes netgi galime naudoti eilutę kaip kartojamą objektą pitone.

my_obj = 'Edureka' iter_obj = iter (my_obj) spausdinti (kitas (iter_obj))

Išvestis: IS

Tai atveda prie šio straipsnio pabaigos, kur mes sužinojome, kaip mes naudojame „Python Iterators“ su pavyzdžiais. Tikiuosi, kad jums aišku viskas, kas buvo pasidalinta su jumis šioje pamokoje.

Jei radote šį straipsnį „Python Iterators“ aktualų, patikrinkite patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą, pasklido po visą pasaulį.

Mes norime jums padėti kiekviename žingsnyje ir parengti mokymo programą, skirtą studentams ir specialistams, norintiems būti . Kursas yra skirtas suteikti jums pažangą pradedant programuoti „Python“ ir išmokyti jus naudotis pagrindinėmis ir pažangiomis „Python“ koncepcijomis bei įvairiomis Kaip

Jei kyla klausimų, nedvejodami užduokite visus klausimus „Python Iterators“ komentarų skyriuje. Mūsų komanda mielai atsakys.