python使用生成器實(shí)現(xiàn)可迭代對象
本文實(shí)例為大家分享了python使用生成器實(shí)現(xiàn)可迭代對象的具體代碼,供大家參考,具體內(nèi)容如下
案例分析:
實(shí)一個可迭代對象的類,它能迭代出給定范圍內(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__方法實(shí)現(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)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
OpenCV-Python實(shí)現(xiàn)凸包的獲取
凸包是一個計算幾何中的概念,在圖像處理過程中,我們常常需要尋找圖像中包圍某個物體的凸包,本文就使用OpenCV實(shí)現(xiàn),感興趣的可以了解一下2021-06-06python加密解密庫cryptography使用openSSL生成的密匙加密解密
這篇文章主要介紹了python加密解密庫cryptography使用openSSL生成的密匙加密解密,需要的朋友可以參考下2020-02-02python判斷windows系統(tǒng)是32位還是64位的方法
這篇文章主要介紹了python判斷windows系統(tǒng)是32位還是64位的方法,實(shí)例分析了兩種解決方法,非常簡單實(shí)用,需要的朋友可以參考下2015-05-05Django uwsgi Nginx 的生產(chǎn)環(huán)境部署詳解
這篇文章主要介紹了Django uwsgi Nginx 的生產(chǎn)環(huán)境部署詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02用60行代碼實(shí)現(xiàn)Python自動搶微信紅包
這篇文章主要介紹了用60行代碼實(shí)現(xiàn)Python自動搶微信紅包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Python圖形用戶界面與游戲開發(fā)實(shí)例詳解
GUI是圖形用戶界面的縮寫,圖形化的用戶界面對使用過計算機(jī)的人來說應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Python圖形用戶界面與游戲開發(fā)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09淺析如何在Python中使用結(jié)構(gòu)模式匹配
在Python 3.10中引入了模式匹配語法,允許我們在應(yīng)用程序中使用強(qiáng)大的新編程技術(shù)進(jìn)行決策,下面我們就來講講如何在Python中使用結(jié)構(gòu)模式匹配吧2023-08-08