本文實例為大家分享了python使用生成器實現(xiàn)可迭代對象的具體代碼,供大家參考,具體內(nèi)容如下
案例分析:
實一個可迭代對象的類,它能迭代出給定范圍內(nèi)所有的素數(shù):
pn = Number(1, 30)
for k in pn:
print(k)
結(jié)果為:2,3,5,7,11,13,17,19,23,29
如何解決這個問題?
將該類的__iter__方法實現(xiàn)成生成器函數(shù),每次yield返回一個素數(shù)
#!/usr/bin/python3 class Number(object): def __init__(self, start, end): self.start = start self.end = end # 判斷一個數(shù)字是否是素數(shù) def get_num(self, k): if k >= 2: for i in range(2, k): if k % i == 0: return False return True def __iter__(self): for k in range(self.start, self.end+1): if self.get_num(k): # 是素數(shù)yield出去 yield k if __name__ == '__main__': num = Number(2, 30) for i in num: print(i)