python3核心語法練習題 3 生成器 迭代器

像背單詞一樣記憶python高級用法

1 什麼是python生成器,有那兩種。請比較生成器和列表生成式的區別,與列表生成式相比,生成器有什麼好處?

生成器不會把結果保存在一個系列中,而是保存生成器的狀態,在每次進行迭代時返回一個值,直到遇到StopIteration異常結束。

生成器有兩種,一種是生成器表達式,一種是利用yield的生成器函數。

生成器表達式: 與列表生成式語法一樣,只不過把列表解析的[]換成()

利用yield的生成器函數:執行到 yield 時,函數就返回一個迭代值,下次迭代時,代碼從 yield 的下一條語句繼續執行,而函數的本地變量看起來和上次中斷執行前是完全一樣的,於是函數繼續執行,直到再次遇到 yield。看起來就好像一個函數在正常執行的過程中被 yield 中斷了數次,每次中斷都會通過 yield 返回當前的迭代值。

好處:生成器表達式能做的事情列表解析基本都能處理,只不過在需要處理的序列比較大時,列表解析比較費內存。

2 請寫出依次返回0到9的平方的生成器。

解答:

python3核心語法練習題 3 生成器 迭代器

3 寫出無窮返回奇數的生成器

解答

python3核心語法練習題 3 生成器 迭代器

4對上題的函數,下面的表達式會分別得到什麼結果?

python3核心語法練習題 3 生成器 迭代器

解答:1, 1, 1,3

5 寫出斐波拉契數列的生成器

解答:

python3核心語法練習題 3 生成器 迭代器

6 下面語句的返回值是什麼?

python3核心語法練習題 3 生成器 迭代器

迭代器和可迭代是不一樣的哦。


分享到:


相關文章: