有時候乙個列表裡的元素過多,多到計算機記憶體存不下來,我們就需要想乙個辦法解決這個問題,如果能在需要的時候生成新元素就好了,可以用生成器。生成器–一種邊迴圈邊根據某種演算法計算生成元素的機制
如何建立乙個生成器呢,最簡單的方法通過修改一下列表生成器建立。
n = (n for n in
range(10))
def
fib(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b = b,a+b
n = n+1
這就生成了乙個能生成斐波那契數的生成器,他的原理是遇到yield就中斷直到下一次呼叫再繼續執行。yield的作用類似return如上面的例子就是返回b的值。
要讓生成器生成元素需要先建立生成器物件b,再使用next(b)
生成器是可以迭代的所以能使用如下**生成
b = fib(max)
for n in b:
...
Python生成器學習筆記
生成器在python中首先是乙個物件,用於建立python序列。使用生成器可以迭代龐大的序列,且不需要在記憶體中建立和儲存整個序列。通常,生成器是為迭代器產生資料的。典型的使用用例是range 函式。每次迭代生成器時,生成器會記住上一次呼叫的內容,並且返回下乙個值。生成器函式和普通函式類似,但是它的...
Python筆記 生成器
日期 20170925 python中有乙個很有趣的東東,叫生成器。我們先來看看簡單的 1,usr bin python3 defmygenerator for n in range 1,4 yield n return done print mygenerator print num mygene...
python生成器筆記
生成器 自動實現了迭代器協議 物件必須提供乙個next方法,執行改方法要麼返回迭代中的下一項,要麼就引起乙個stopiteration的異常,以終止迭代 只能往後走不能往前進 第一種形式 idter i for i in range 10 idter為乙個生成器,有next 方法,idter.nex...