迭代器模板:
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