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

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