對於生成器的理解

2022-07-19 04:00:17 字數 982 閱讀 8026

什麼是生成器呢?

生成器就是一次生成乙個值的函式

就像是一把自動步槍,生成器中的值就它的子彈,槍平時都會有保險,在關保險的時候怎麼扣扳機都不會射出子彈

而自動步槍呢還可以單點和全自動兩個模式進行射擊.

舉個例子:

def

func():

for i in range(100):

yield i

這就是個簡單的生成器,當你呼叫func()的時候不會取出任何值而是產生了乙個生成器,

就像是給槍裝上了子彈,但是開了保險.

那麼,怎麼給槍關保險呢?

將函式賦給乙個變數

a = func()
這就是給槍開保險.

既然開了保險了那麼怎麼射擊呢?

首先是單發:

print(a.__next__())
一次取乙個值,這就是單發,想要在此取值重複此操作

這就是你射擊出來的子彈,但是稍微思考一下,如果是最後一發子彈怎麼辦?

程式會執行但是也會報錯

這個錯誤就告訴你子彈打光了

接下來說說全自動:

for item in

a:

print(item)

其實就是乙個for迴圈,這樣就會把迭代器中的值全部取出來了,簡稱為"全自動"

生成器的理解

在python中,一邊迴圈一邊計算的機制,稱為生成器 generator。列表所有資料都在記憶體中,如果有海量資料的話將會非常耗記憶體。如 僅僅需要訪問前面幾個元素,那後面絕大多數元素占用的空間都白白浪費了。如果列表元素按照某種演算法推算出來,那我們就可以在迴圈的過程中不斷推算出後續的元素,這樣就不...

理解 Python 生成器

什麼時候呼叫,什麼時候計算並返回值 生成器僅僅儲存了一套生成數值的演算法,並且沒有讓這個演算法現在就開始執行,而是我什麼時候調它,它什麼時候開始計算乙個新的值,並給你返回。在python中,一邊迴圈一邊計算的機制,稱為生成器 generator。列表耗記憶體 列表所有資料都在記憶體中,如果有海量資料...

對生成器的理解

迭代器 對於可迭代物件使用內建函式iter 獲取迭代器物件。迭代器物件通過next 方法來訪問裡面的元素 當容器中沒有可訪問的元素後,next 方法將會丟擲乙個stopiteration異常終止迭代器。列表生成式 例 x 2 for x in range n 生成器表示式 通列表解析語法,把列表解析...