1. 程式人生 > >python學習筆記之基礎操作(六)生成器和迭代器

python學習筆記之基礎操作(六)生成器和迭代器

生成器總結

  • 語法上和函式類似:生成器函式幾乎和常規函式一樣,不同的又兩點, 第一點是返回使用yield關鍵字,第二點是在連續邏輯內可以多次返回 這是yield的特點決定的,yield會記住函式執行的位置,下一次呼叫next函式時會自動從上次返回的位置開始繼續執行,因此生成器是無法倒推的。
#生成器函式例項
def test():
	for i in range(10):
		yield i*100
g = test()
for i in range(11):
	print(g._next_())

  • 自動實現迭代協議,上述_next_()函式時自動實現的,不需要手動編寫,但 是需要對生成器函式結束時的異常進行處理,當然,for迴圈等常見python方法中已經處理了
  • 優點:延遲計算,並且進行實時計算的資料傳輸,例如上面的例子,我們不 需要計算所有的乘積之後在統一返回一個數組,而是計算一個值就可以返回一個值
#列表生成的方法,需要儲存一個巨大的列表,記憶體大
sum([i for i in range(1000000)])   
#生成器方法,實時傳輸資料,記憶體非常小
sum(i for i in range(1000000))