python3 迭代器與生成器

2021-08-08 15:43:28 字數 927 閱讀 4038

生成器yield

'''在python中,使用了yield的函式被稱為生成器(generator)

跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。

在呼叫生成器的執行過程中,每次遇到yield時函式會暫停並儲存當前所有執行資訊,返回yield的值。

並在下一次執行next()方法時從當前位置繼續執行

'''

#

使用yield實現斐波那契數列

import

sysdef fibonacci(n):#

生成函式 斐波那契

a,b,counter=0,1,0

print('a'

,a)

while

true:

if(counter>n):

return

yield

a a,b=b,a+b

counter+=1f=fibonacci(10)#

f是乙個迭代器由生成器生成

while

true:

try:

print(next(f),end='')

except

stopiteration:

sys.exit()

#結果是0,1,1,2,3,5,8,13,21,34,55

總結: 什麼情況下需要使用yield

乙個函式f,f返回乙個list,這個list是動態計算出來的(不管是數學上的計算還是邏輯上的讀取格式化),

並且這個list會很大(無論是固定很大還是隨著輸入引數的增大而增大),這個時候,我們希望每次呼叫這個函式並使用迭代器進行

迴圈的時候乙個乙個的到每個list元素而不是直接得到乙個完整的list來節省記憶體,這個時候yield就很有用。

Python3 迭代器與生成器

迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 list 1 2,3 ...

Python3 迭代器與生成器

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。使用iter 定義迭代器,使用next 訪問迭代器的下乙個元素。當迭代器中沒有下乙個元素時,繼續使用next 則會丟擲stopiteration異常。author timax liu import sys 宣告迭代器兩種方式 iter...

Python3 迭代器與生成器

迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 例項 python 3...