案例分析:
實乙個可迭代物件的類,它能迭代出給定範圍內所有的素數:
&nbjhzcgehhlsp; pn = number(1, 30)
for k in pn:
print(k)
結果為:2,3,5,7,11,13,17,19,23,29
如何解決這個問題?
將該類的__iter__方法實現成生成器函式,每次yield返回乙個素數
#!/usr/bin/python3
class number(object):
def __init__(self, start, end):
self.start = startwww.cppcns.com
self.end = end
# 判斷乙個數字是否是素數
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):
# 是素數yield出去
yield jhzcgehhlk
if __name__ == '__main__':
num = number(2, 30)
for i in num:
print(i)
本文標題: python使用生成器實現可迭代物件
本文位址:
python中生成式和生成器 迭代器與可迭代
標籤 python 比如a 1,2,3 如果想生成乙個b裡面存的是a的2倍,則可以使用 2 i for i in a 上面通過生成式雖然可以生成乙個列表,但是如果我們列表過於大,可能一次儲存不下,所以便有了生成器這個說法。生成器你可以把他看做乙個方法,每次使用一下它,他就能幫你按照你的規則生成乙個數...
python如何使用生成器函式實現可迭代物件
實際案例 實現乙個可迭代物件的類,它能迭代出給定範圍內所有素數 pn primenumbers 1,30 for k in pn print k輸出結果為 2 3 5 7 11 13 17 19 23 29解決方案 將該類的 iter 方法實現成生成器函式,每次yield返回乙個素數。有了解決方案後...
python迭代 如何使用生成器函式實現可迭代物件
問題舉例 實現乙個可迭代物件的類,它能迭代出給定範圍內 的所有素數 pn primenumbers 1,30 for x in pn print x 輸出結果 2 3 5 7 11 13 17 19 23 29 將該類的 iter 方法實現成生成器函式,每次用yield返回乙個素數 from col...