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