Python Iterators
Python Iterators
iterator သည် ရေတွက်နိုင်သောတန်ဖိုးများပါရှိသော အရာဝတ္ထုတစ်ခုဖြစ်သည်။
iterator သည် တန်ဖိုးအားလုံးကို ဖြတ်ကျော်နိုင်သည်ဟု ဆိုလိုရင်းအပေါ် ထပ်ကာထပ်ကာ ပြုလုပ်နိုင်သော အရာတစ်ခုဖြစ်သည်။
__iter__()
နည်းပညာအရ၊ Python တွင်၊ iterator သည် နည်းလမ်းများ နှင့် ပါ၀င်သော iterator protocol ကိုအကောင်အထည်ဖော်သည့်အရာဝတ္ထုတစ်ခုဖြစ်သည် __next__()
။
Iterator နှင့် Iterable
စာရင်းများ၊ tuples၊ အဘိဓာန်များနှင့် အစုံများသည် ထပ်တလဲလဲရနိုင်သော အရာများဖြစ်သည်။ ၎င်းတို့သည် သင်ထပ်ယူနိုင်သော ကွန်တိန်နာများ ဖြစ်သည်။
ဤအရာဝတ္တုအားလုံးတွင် iter()
iterator ကိုရယူရန်အသုံးပြုသည့် နည်းလမ်းတစ်ခုရှိသည်။
ဥပမာ
tuple တစ်ခုမှ iterator ကို ပြန်ပေးကာ တန်ဖိုးတစ်ခုစီကို ပရင့်ထုတ်ပါ-
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
စာကြောင်းများပင်လျှင် ထပ်ကာထပ်ကာ ပြုလုပ်နိုင်သော အရာများဖြစ်ပြီး ထပ်တလဲလဲ ပြန်ပေးနိုင်ပါသည်။
ဥပမာ
စာကြောင်းများသည် စာလုံးအစီအစဥ်များပါရှိသော ထပ်ကာထပ်ကာပြုလုပ်နိုင်သော အရာများဖြစ်သည်-
mystr = "banana"
myit = iter(mystr)
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
Iterator မှတဆင့်လှည့်ပတ်ခြင်း။
for
ထပ်ကာထပ်ကာ ပြုလုပ်နိုင်သော အရာဝတ္ထုတစ်ခုမှတဆင့် ထပ်ဆင့်ပြန်ဆိုရန် ကွင်းပတ် တစ်ခုကိုလည်း အသုံးပြုနိုင်သည် ။
ဥပမာ
tuple ၏တန်ဖိုးများကို ထပ်လောင်းဖော်ပြသည်-
mytuple = ("apple", "banana", "cherry")
for x in mytuple:
print(x)
ဥပမာ
စာကြောင်းတစ်ခု၏ အက္ခရာများကို ထပ်လုပ်ပါ-
mystr = "banana"
for x in mystr:
print(x)
loop သည် အမှန်တကယ် တွင် for
iterator object တစ်ခုကို ဖန်တီးပြီး loop တစ်ခုစီအတွက် next() method ကို လုပ်ဆောင်သည်။
Iterator တစ်ခုဖန်တီးပါ။
အရာဝတ္ထု/အတန်းအစားတစ်ခုကို ထပ်ခါတလဲလဲပြုလုပ်ရန် သင်နည်းလမ်းများ
__iter__()
နှင့်
__next__()
သင့်အရာဝတ္တုကို အကောင်အထည်ဖော်ရန် လိုအပ်သည်။
Python Classes/Objects အခန်း တွင် သင်လေ့လာခဲ့ပြီးသည့်အတိုင်း ၊ အတန်းအားလုံးတွင်
__init__()
အရာဝတ္ထုကို ဖန်တီးနေချိန်တွင် အစပြုလုပ်ဆောင်နိုင်သည့် လုပ်ဆောင်ချက်ဟုခေါ်သော လုပ်ဆောင်ချက်တစ်ခုရှိသည်။
နည်းလမ်းသည် အလားတူလုပ်ဆောင်သည်၊ သင်သည် လည်ပတ်မှုများကို လုပ်ဆောင်နိုင်သည် ( __iter__()
အစပြုခြင်း စသည်)၊ သို့သော် အမြဲတမ်း iterator အရာဝတ္ထုကို သူ့ဘာသာသူ ပြန်ပေးရပါမည်။
နည်းလမ်း သည် __next__()
သင့်အား လည်ပတ်မှုများကို လုပ်ဆောင်ရန်လည်း ခွင့်ပြုထားပြီး စီးရီးတွင် နောက်အကြောင်းအရာကို ပြန်ပေးရပါမည်။
ဥပမာ
နံပါတ်များကို 1 မှစတင်၍ ပြန်ပေးသည့် ထပ်ကိန်းတစ်ခုကို ဖန်တီးပါ၊ စီစဥ်တစ်ခုစီသည် တစ်ခုပြီးတစ်ခုတိုးလာမည် (1,2,3,4,5 စသည်ဖြင့်) ပြန်ပေးသည်)။
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))
ရပ်တန့်ခြင်း။
for
အထက်ဖော်ပြပါ ဥပမာသည် သင့်တွင် next() ဖော်ပြချက် အလုံအလောက်ရှိလျှင် သို့မဟုတ် ၎င်းကို loop တစ်ခုတွင် အသုံးပြုမည်ဆိုပါက ထာဝစဉ် ဆက်သွား
ပါမည်။
ထပ်တလဲလဲ ထာဝစဉ်မတည်မငြိမ်ဖြစ်ခြင်းကို တားဆီးရန်
StopIteration
ကြေညာချက်ကို ကျွန်ုပ်တို့သုံးနိုင်သည်။
နည်းလမ်း တွင် __next__()
၊ သတ်မှတ်ထားသော အကြိမ်အရေအတွက်အတိုင်း လုပ်ဆောင်ပါက အမှားတစ်ခုကို မြှင့်တင်နိုင်သည်-
ဥပမာ
ထပ်ခါထပ်ခါ 20 ပြီးနောက် ရပ်ပါ
class MyNumbers:
def __iter__(self):
self.a =
1
return self
def __next__(self):
if 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)