python基礎 生成器(一)

2022-07-15 04:03:14 字數 1635 閱讀 8799

生成器:一邊迴圈一邊計算的機制,稱為生成器.

兩種表現形式:

1.生成器表示式,列表解析的形式,只要把乙個列表生成式的改成(),就建立了乙個generator:

s1 = [i for i in range(10)]  #

列表print

(s1)

s2 = (i for i in range(10)) #

生成器print

2.生成器函式;和常規的函式一樣,只是不用return而使用yield。yield相當於return,但功能有所差異,其一,yield一次返回乙個結果,並掛起函式,下一次呼叫(用next或__next__)從上一次掛起的位置繼續執行

.send() 和next()一樣,都能讓生成器繼續往下走一步(下次遇到yield停),但send()能傳乙個值,這個值作為yield表示式整體的結果

def

test():

yield 1

yield 2

print(test()) #

直接寫函式名並不會執行函式,而是返回乙個生成器

a = test() #

函式賦值給變數才會保持狀態

生長器函式的特點:需要才呼叫next,不需要不呼叫,記憶體不會卡

列表解析的形式

l=[1,2,3,4,]

print(sum(l))#

一次性載入,耗記憶體,卡死

print(sum(i for i in range(50000000000000000000000)))#

需要才載入next,不會卡

函式形式

import

time

deftest():

print('

開始生孩子了')

print('

開始生孩子了')

yield'我

'print('

開始生孩子了')

yield'兒子

'print('

開始生孩子了')

yield'孫子

生成器特點:

1是可迭代物件

2實現了延遲計算,省記憶體

3生成器比其他可迭代物件多了個延遲計算,節省記憶體的好處。

python基礎 生成器

生成器是根據某種演算法得出的一系列元素,需要用到該元素,才會生成出來,比列表節省記憶體空間。生成器相當於儲存演算法,授人以漁,列表之類的是授人以魚。第一種建立生成器的方法 1 gen x 2 for x in range 5 type gen 通過next 函式得到生成器的每個值 next gen ...

python基礎 生成器

生成器函式 def generator print 1 return a ret generator print ret 只要含有yield關鍵字的函式都是生成器函式 yield不能和return共用且需要寫在函式內 def generator print 1 yield a 生成器函式 執行之後會...

python 生成器作用 Python生成器

生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...