生成器的建立方式

2021-10-01 13:28:56 字數 1054 閱讀 7508

根據規則迴圈生成資料,當條件不成立則生成資料結束,資料不是一次性全部生成出來,而是使用乙個生成乙個,可以節省大量記憶體.

1.生成器推導式

2.yield關鍵字

生成器推導式與列表推導式類似只不過生成器推導式使用小括號

my_generator=

(i *

10for i in

range(5

))print

(my_generator)

# next獲取生成器當下乙個值

value=

next

(my_generator)

print

(value)

# 遍歷生成器

for value in my_generator:

print

(value)

next函式獲取生成器中的下乙個值

for迴圈遍歷生成器中的每乙個值

只要在def函式裡看到有yield關鍵字就是生成器

def

defmygenerator

(n):

for i in

range

(n):

print

('開始生成'

)yield i

print

('完成一次'

)if __name__ ==

'__main__'

: g=mygenerator(2)

#result=next(g)

#print(result)

for i in g:

print

(i)

**說明:

1.**指定到yield會暫停,然後把結果返回去,下次啟動生成器會在暫停的位置繼續往下執行.

2.生成器如果把資料生成完成,再次獲取生成器中的下乙個資料會丟擲stoplteration異常,表示停止迭代異常

3.while迴圈內部沒有處理異常操作,需要手動新增處理異常操作

4.for迴圈內部自動處理了停止迭代異常,使用起來更加方便

python yield建立生成器

利用迭代器,我們可以在每次迭代獲取資料 通過next 方法 時按照特定的規律進行生成。但是我們在實現乙個迭代器時,關於當前迭代到的狀態需要我們自己記錄,進而才能根據當前狀態生成下乙個資料。為了達到記錄當前狀態,並配合next 函式進行迭代使用,我們可以採用更簡便的語法,即生成器 generator ...

建立生成器的兩種方式

一種利用列表推導式,一種利用yield 1 生成器 特殊的迭代器2 生成器的兩種創作方法3 一 4 list i 2for i in range 10 列表推導式5 print list,end 67 第一種建立生成器 利用列表推導式 8 list1 i 2for i in range 10 9pr...

生成器模式 建立英雄

builder 為建立乙個product物件的各個部件定義指定的抽象方法,並提供乙個返回該product的方法。concretebuilder 實現builder的介面以構造和裝配該產品的各個部件。director 導演類,用於指導具體構建者如何構建產品,控制呼叫先後次序,並向呼叫者返回完整的產品類...