python迭代 如何使用生成器函式實現可迭代物件

2021-09-26 01:31:22 字數 701 閱讀 6585

問題舉例:

實現乙個可迭代物件的類,它能迭代出給定範圍內 的所有素數:

pn = primenumbers(1, 30)

for x in pn:

print(x)

輸出結果:

2 3 5 7 11 13 17 19 23 29

將該類的__iter__方法實現成生成器函式,每次用yield返回乙個素數

**

from collections.abc import

iterable

class

primenumbers(iterable):

def__init__

(self, a, b):

self.a =a

self.b =b

def__iter__

(self):

for k in range(self.a, self.b + 1):

ifself.is_prime(k):

yield

k

defis_prime(self, k):

return false if k < 2 else all(map(lambda x: k % x, range(2, k)))

pn = primenumbers(1, 30)

for n in

pn:

print(n)

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...

python 迭代器 生成器

知識背景 1 呼叫乙個普通的python函式時,一般是從函式的第一行 開始執行,結束於return語句 異常或者函式結束 可以看作隱式的返回none 2 一旦函式將控制權交還給呼叫者,就意味著全部結束。函式中做的所有工作以及儲存在區域性變數中的資料都將丟失 3 再次呼叫這個函式時,一切都將從頭建立。...