Python Iterator
- Nakaraang Pahina Inheritance ng Python
- Susunod na Pahina Scope ng Python
Python Iterator
Ang iterator ay isang bagay na naglalaman ng bilang ng maaaring bilangin na halaga.
Ang iterator ay isang maaaring ipasok na bagay, na nangangahulugang maaari mong magpasukan sa lahat ng halaga.
Technically habang ang Python, ang iterator ay isang bagay na nagpapatupad ng iterator protocol, na naglalaman ng mga method __iter__()
at __next__()
.
Iterator VS Maaaring ipasok na bagay (Iterable)
list, tuple, dictionary at set ay maaaring ipasok na bagay. Sila ay maaaring ipasok na mga bagay, mula saan maaari mong kakuha ng iterator (Iterator).
Lahat ng mga bagay na ito ay mayroong paraan na makuha ang iterator iter()
Method:
Halimbawa
Ibigay ang isang iterator mula sa tuple at iprint ang bawat halaga:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
Kahit ang string ay maaaring ipasok na bagay, at maaaring ibigay ang iterator:
Halimbawa
Ang string ay maaaring ipasok na bagay, na naglalaman ng isang serye ng mga character:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
Pasukan sa iterator
Maaari din nating gamitin ang for loop upang magpasukan sa maaaring ipasok na bagay:
Halimbawa
Ito ay nag-iterasyon sa mga halaga ng tuple:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Halimbawa
Ito ay nag-iterasyon sa mga character ng string:
mystr = "banana" for x in mystr: print(x)
Tipan:Ang for loop ay gumagawa ng isang bagay na iterator at gawin para sa bawat ekspasyon next()
method.
paglilikha ng iterator
Para sa pagkakalikha ng bagay/klase bilang iterator, dapat na maisakop ng bagay ang __iter__()
at __next__()
method.
Tulad ng nakikita mo sa kabanata ng Python class/object, lahat ng klase ay may pangalang __init__()
Ang function na nagbibigay ng kapangyarihan sa iyo na gumawa ng ilang inisyal na pagluluklok kapag gumagawa ng mga bagay.
__iter__()
Ang paraan ay may magkaparehong ginagamit, maaari kang gumawa ng operasyon (inisyasyon at iba pa), ngunit dapat palaging ito ay mabalik sa parehong tagapagpadala ng object.
__next__()
Ang paraan ay nagbibigay-daan din sa iyo na gumawa ng operasyon, at dapat ito ay mababalik sa susunod na bagay sa sequence.
Halimbawa
Makakapagpalabas ng isang tagapagpadala ng numero na nagbabalik ng numero, mula 1, na bawasan ang bawas sa bawas (nagbabalik ng 1, 2, 3, 4, 5 at iba pa):
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
StopIteration
Kung mayroon kang sapat na next()
pahintulot, o gamitin ito sa loob ng for loop, kung gayon ay ang halimbawa ay magpatuloy na magpatuloy.
Upang maiwasan na magpatuloy ang pag-iterasyon, maaari naming gamitin ang StopIteration
pahintulot.
Sa __next__()
Sa mga paraan, kung nakumpleto na ng pag-iterasyon ang itinalagang bilang, maaari naming magdagdag ng isang tuntunin ng paghinto upang itakda ang pagkakaroon ng error:
Halimbawa
Hihinto pagkatapos ng 20 na pag-iterasyon:
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): kung self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
- Nakaraang Pahina Inheritance ng Python
- Susunod na Pahina Scope ng Python