"""
生成器
- 生成器表達式:(x ** 2 for x in range(1, 11))
- yield關(guān)鍵字
迭代器
- __iter__:返回迭代器對象
- __next__:取下一個迭代值
"""
from math import sqrt
def is_prime(num):
"""判斷是不是素數(shù)"""
for factor in range(2, int(sqrt(num)) + 1):
if num % factor == 0:
return False
return True
def prime(num):
"""素數(shù)生成器"""
for val in range(2, num + 1):
if is_prime(val):
yield val
class Prime(object):
"""素數(shù)迭代器"""
pass
class Fib(object):
"""斐波拉切數(shù)迭代器"""
def __init__(self, num):
self.num = num
self.a, self.b = 0, 1
self.idx = 0
def __iter__(self):
return self
def __next__(self):
if self.idx < self.num:
self.a, self.b = self.b, self.a + self.b
self.idx += 1
return self.a
raise StopIteration()
def fib(num):
"""斐波拉切數(shù)生成器"""
a, b = 0, 1
for _ in range(num):
a, b = b, a + b
yield a
def main():
"""主函數(shù)"""
print('fibonacci number'.center(80, '-'))
for val in Fib(20):
print(val, end=' ')
print('\n', '-' * 80, sep='')
print('prime number'.center(80, '-'))
for val in prime(100):
print(val, end=' ')
print('\n', '-' * 80, sep='')
if __name__ == '__main__':
main()
生成器和迭代器
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 裝飾器 裝飾器本質(zhì)是一個python函數(shù),它可以在讓其他函數(shù)不需要任何代碼變動的前提下增加額外的功能,裝飾器的返回...
- 轉(zhuǎn)載請注明出處:http://m.itdecent.cn/p/6f7102153a1c本文出自Shawpoo的...
- 生成器:a.可以看成是一個可以存儲多個數(shù)據(jù)的容器。需要里面的數(shù)據(jù)的時候,就生成一個。里面的數(shù)據(jù)只能從前往后一個一個...
- 單點登錄(英語:Single sign-on,縮寫為 SSO),又譯為單一簽入,一種對于許多相互關(guān)連,但是又是各自...