Pytho 迭代器

迭代器模板:

import math
#可迭代对象
class Num(object):
   def __init__(self):#构造函数,定义变量
      self.p=[]
      
   def cout(self,n):#自定义函数,用于编辑迭代的规则,对p进行操作
      #这是一个求素数的迭代器
      self.n=n
      m=2
      while(len(self.p)<self.n):
         i=2
         while(i<=int(math.sqrt(m))):
            if m%i is 0:
               break
            i+=1
         if i>int(math.sqrt(m)):
            self.p.append(m)
         m+=1

   def __iter__(self):#固定的语句,返回迭代器
      prime=Prime(self)
      return prime

#迭代器
class Prime(object):
   def __init__(self,num):#构造函数,创建迭代对象实例
      self.num=num
      self.current=0
      
   def __next__(self):#next()函数,迭代的主体
      if self.current<len(self.num.p):
         P=self.num.p[self.current]
         self.current+=1
         return P
      else:
         raise StopIteration

   def __iter__(self):#固定语句,返回自身
      return self

if __name__=="__main__":
   n=input()
   num=Num()
   num.cout(int(n))
   for i in num:
      print(i)

迭代器由两个类构成:

类1:可迭代对象,包含__init__(),__iter__()和定义迭代规则的函数。

__init__(self):构造函数,可以在其中定义类需要用到的变量

__iter__(self):固定的2行代码,为下面的迭代器创建一个实例,将迭代对象传给迭代器,并返回该实例

类2:迭代器,包含__init__(),__next__(),__iter__()三个函数

__init__(self,a):构造函数,读取接收到的迭代对象实例a

__next__(self):迭代器的迭代主体,该函数返回迭代的每一步,编写时用return向迭代器写入数据,raise StopIteration 抛出异常,表示结束

__iter__(self):固定的一行代码,return self

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章