Python 迭代器

Python 迭代器

迭代器是一种对象,该对象包含值的可计数数字。

迭代器是可迭代的对象,这意味着您可以遍历所有值。

从技术上讲,在 Python 中,迭代器是实现迭代器协议的对象,它包含方法 __iter__() နှင့် __next__()

迭代器 VS 可迭代对象(Iterable)

列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器,您可以从中获取迭代器(Iterator)。

所有这些对象都有用于获取迭代器的 iter() 方法:

အမှု

从元组返回一个迭代器,并打印每个值:

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))

အမှုကြိုး

遍历迭代器

我们也可以使用 for 循环遍历可迭代对象:

အမှု

迭代元组的值:

mytuple = ("apple", "banana", "cherry")
for x in mytuple:
  စက်ကျန်(x)

အမှုကြိုး

အမှု

迭代字符串中的字符:

mystr = "banana"
for x in mystr:
  စက်ကျန်(x)

အမှုကြိုး

提示:for 循环实际上创建了一个迭代器对象,并为每个循环执行 next() စနစ်ကို ပါဝင်သည်。

စက်တန့်ကုန်းဖန်တီး

အရာဝတ္တု/အမျိုးအစားကို ဖန်တီးပြီး စက်တန့်ကုန်းအဖြစ် ဖြိုးပွားစေရန် အရာဝတ္တုကို __iter__() နှင့် __next__() စနစ်ကို ပါဝင်သည်。

သင်သည် ပြည်ထောင်စုတိုက်/အရာဝတ္တု စာကြိုးတန်းတွင် လေ့လာခဲ့သည့်အတိုင်း၊ အားလုံးသော အမျိုးအစားများသည် အမည်ပေါ် __init__() ပုံစံသည်၊ သူကို အရာဝတ္တုကို ဖန်တီးစဉ် အစီအစဉ်ချမှတ်ခြင်းကို ခွင့်ပြုသည်。

__iter__() အမှု

__next__() နည်းလမ်း

အမှု

ပြင်သစ် အချက်အရာ ကို ပြန်လည်ပေး

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

အခြေခံ အရာ next() ဖော်ပြ

အပြီးသတ် ရန် ကို 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:
  စက်ကျန်(x)

အမှုကြိုး