像背單詞一樣記憶python高級用法
1 什麼是python生成器,有那兩種。請比較生成器和列表生成式的區別,與列表生成式相比,生成器有什麼好處?
生成器不會把結果保存在一個系列中,而是保存生成器的狀態,在每次進行迭代時返回一個值,直到遇到StopIteration異常結束。
生成器有兩種,一種是生成器表達式,一種是利用yield的生成器函數。
生成器表達式: 與列表生成式語法一樣,只不過把列表解析的[]換成()
利用yield的生成器函數:執行到 yield 時,函數就返回一個迭代值,下次迭代時,代碼從 yield 的下一條語句繼續執行,而函數的本地變量看起來和上次中斷執行前是完全一樣的,於是函數繼續執行,直到再次遇到 yield。看起來就好像一個函數在正常執行的過程中被 yield 中斷了數次,每次中斷都會通過 yield 返回當前的迭代值。
好處:生成器表達式能做的事情列表解析基本都能處理,只不過在需要處理的序列比較大時,列表解析比較費內存。
2 請寫出依次返回0到9的平方的生成器。
解答:
3 寫出無窮返回奇數的生成器
解答
4對上題的函數,下面的表達式會分別得到什麼結果?
解答:1, 1, 1,3
5 寫出斐波拉契數列的生成器
解答:
6 下面語句的返回值是什麼?
迭代器和可迭代是不一樣的哦。
閱讀更多 黑客小學生藍薩節 的文章