本文實例為大家分享了python使用生成器實現(xiàn)可迭代對象的具體代碼,供大家參考,具體內(nèi)容如下
成都創(chuàng)新互聯(lián)公司專注于南湖網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供南湖營銷型網(wǎng)站建設(shè),南湖網(wǎng)站制作、南湖網(wǎng)頁設(shè)計、南湖網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造南湖網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供南湖網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。案例分析:
實一個可迭代對象的類,它能迭代出給定范圍內(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)