【python學習筆記】Python生成器yield
生成器(generator)
生成器不會把結果儲存在一個系列中,而是儲存生成器的狀態,在每次進行迭代時返回一個值,直到遇到StopIteration異常結束。
生成器是可迭代物件,是惰性求值的,在需要的時候才產生結果,而不是立即產生結果。列表推導式產生的是一個列表,結果已經存在於記憶體之中了。
可以減少記憶體消耗,提高程式碼可讀性
生成器函式
example:生成自然數的平方
yield生成器
def a(N):
for i in range(N):
yield i ** 2
for b in a(5):
print b
普通函式
def a(N):
c = []
for i in range(N):
c.append(i*i)
return c
for b in a(5):
print b
生成器表示式
列表推導,將會一次產生所有結果
a = [x**2 for x in range(5)]
生成器表示式
a = (x**2 for x in range(5))
使用next獲取每一個值
>>> next(a)
0
注意項
生成器只能遍歷一次
相關文章
- Python學習筆記|Python之yield理解Python筆記
- Python學習筆記-yield用法及優點Python筆記
- Python學習筆記 - 迭代器和生成器Python筆記
- Python學習筆記Python筆記
- 【學習筆記】python筆記Python
- Python學習筆記|Python之程式Python筆記
- python——Matplotlib學習筆記Python筆記
- python學習筆記4Python筆記
- Python學習筆記(三)Python筆記
- python——numpy學習筆記Python筆記
- python學習筆記(1Python筆記
- Python學習筆記 - queuePython筆記
- Python學習筆記 - asyncioPython筆記
- Python 學習筆記(一)Python筆記
- Python學習筆記 - aiohttpPython筆記AIHTTP
- python學習筆記(二)Python筆記
- Python學習筆記(2)Python筆記
- Effective Python學習筆記Python筆記
- Python學習筆記|Python之索引迭代Python筆記索引
- Python學習筆記|Python之特殊方法Python筆記
- Python學習筆記——turtle庫Python筆記
- python-pygame學習筆記PythonGAM筆記
- 字典--Python學習筆記(五)Python筆記
- Python學習筆記—程式碼Python筆記
- Python學習筆記 - 閉包Python筆記
- Python學習筆記 - 作用域Python筆記
- Python學習筆記 - 變數Python筆記變數
- Python學習筆記 - 多程式Python筆記
- Python學習筆記 - time, datetimePython筆記
- Python學習筆記 - if語句Python筆記
- Python基礎學習筆記Python筆記
- Python學習筆記|Python之執行緒Python筆記執行緒
- Python學習筆記|Python之檔案操作Python筆記
- Python學習筆記|Python之物件導向Python筆記物件
- Python學習筆記|Python之特殊檔案Python筆記
- Python學習筆記|Python之推導式Python筆記
- [寒假學習筆記](二)Python初學筆記Python
- Python學習筆記|Python之正規表示式Python筆記
- Python學習筆記|Python之pycache資料夾Python筆記