【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學習筆記 - 迭代器和生成器Python筆記
- python學習筆記Python筆記
- 【學習筆記】python筆記Python
- Python學習筆記(隨筆)Python筆記
- Python學習筆記(一)——初學PythonPython筆記
- python學習筆記4Python筆記
- python學習筆記(二)Python筆記
- Python學習筆記 - aiohttpPython筆記AIHTTP
- Python 學習筆記(一)Python筆記
- Python學習筆記 - asyncioPython筆記
- Python學習筆記 - queuePython筆記
- Python學習筆記(2)Python筆記
- python學習筆記(1Python筆記
- Python學習筆記(三)Python筆記
- python——numpy學習筆記Python筆記
- Effective Python學習筆記Python筆記
- Python學習筆記(一)Python筆記
- Python學習筆記(3)Python筆記
- python學習筆記——列表Python筆記
- Python學習筆記|Python之程式Python筆記
- Python學習筆記--Python基礎Python筆記
- 詳解Python中yield生成器的用法Python
- Python學習筆記|Python之索引迭代Python筆記索引
- Python學習筆記|Python之特殊方法Python筆記
- Python學習筆記——Python Number(數字)Python筆記
- 【python學習筆記】Python裝飾器Python筆記
- 【python學習筆記】Python反射機制Python筆記反射
- python——Matplotlib學習筆記Python筆記
- Python學習筆記—程式碼Python筆記
- Python學習筆記 - 閉包Python筆記
- Python學習筆記 - 作用域Python筆記
- Python學習筆記 - if語句Python筆記
- Python學習筆記 - 多程式Python筆記
- Python學習筆記 - 變數Python筆記變數
- Python學習筆記——turtle庫Python筆記
- 字典--Python學習筆記(五)Python筆記
- python-pygame學習筆記PythonGAM筆記