python 對生成器函式的深入理解練習題

2021-10-02 09:25:07 字數 722 閱讀 3080

def

add(a, b)

:return a + b

# 定義生成器函式

deftest()

:for i in

range(4

):yield i

g = test(

)# 獲取生成器

for n in[1

,2,10

]:''' gen = (i for i in range(10))是乙個有惰性機制的生成器

沒有元組推導式,因為建立推導式要進行增加操作,但元組沒有增加函式

'''g =

(add(n, i)

for i in g)

''' n遍歷1,2時並沒有執行add函式,因為沒有呼叫生成器,只是定義了生成器,

第二次遍歷結果

(add(n, i) for i in (add(n, i) for i in g))

第三次遍歷結果

(add(n, i) for i in (add(n, i) for i in (add(n, i) for i in g)))

'''print

(list

(g))

# 呼叫生成器拿到所有結果(list內部用了__next__在生成器g的惰性機制下拿到了所有的結果)生成器就空了

'''結果是

[30, 31, 32, 33]

'''

對生成器的理解

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

python生成器函式 Python 生成器函式

一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...

python 生成器函式

python 函式的定義體中有 yield 關鍵字,該函式就是生成器函式。呼叫生成器函式時,會返回乙個生成器物件。生成器函式的定義體執行完畢後,生成器物件會丟擲stopiteration 異常。def gen a print start yield 1 print starting yield 2 ...