一、什麼是生成器?
生成器指的是能夠動態(迴圈一次,計算一次,返回一次)提供資料的可迭代物件;簡單來說,是可迭代物件(擁有__iter__方法的類物件為可迭代物件)+ 迭代器(擁有__next__方法的類物件為迭代器)。
二、生成器的作用
在迴圈過程中,按照某種演算法推算資料,不必建立容器儲存完整的結果而節省記憶體空間。資料量越大,優勢越明顯。以上作用也稱為延遲操作或惰性操作,通俗的講就是在需要的時候才計算結果,而不是一次性構建出所有結果。
三、生成器舉例
(1). **如下所示:
#encoding = utf-8
"""@version:3.7
@author:qiuyucheng
@file:generator.py
@time:10:27
"""class
mygenerator
:"""
生成器 = 可迭代物件(有__iter__方法) + 迭代器(有__next__方法)
"""def__init__
(self,stop_value)
: self.__begin =
0 self.__stop_value = stop_value
def__iter__
(self)
:# 1.可迭代物件返回自身,得到乙個迭代器,
return self
# 通過自身呼叫自己的__next__方法,進行迭代。
def__next__
(self)
:if self.__begin >= self.__stop_value:
raise stopiteration
temp = self.__begin
self.__begin +=
1return temp
for item in mygenerator(10)
:print
("列印數字:"
,item)
(2). 結果如下:
列印數字: 0
列印數字: 1
列印數字: 2
列印數字: 3
列印數字: 4
列印數字: 5
列印數字: 6
列印數字: 7
列印數字: 8
列印數字: 9
python生成器詳解
usr bin python coding utf8 生成器函式 只要函式體包含yield關鍵字 name該函式就是生成器函式 def foo print first yield 1 print second yield 2 print third yield 3 g foo print g pri...
python中的yield生成器詳解
在學習生成器之前,必須先了解一下迭代器。因為生成器就是一種特殊的迭代器,而且生成器用起來更加優雅。迭代器的詳解可以參考我的另一篇博文 先說一種比較簡單的生成器,通過例子慢慢來體會什麼是生成器。列表生成式 l x for x in range 5 print l 簡單的生成器 g x for x in...
生成器詳解
什麼是生成器 生成器是一種特殊的迭代器,生成器實現了迭代器協議 iter next 生成器解決什麼問題 如果有一億的資料要我們處理,我們通過列表的方式來訪問的話,這一億的資料是存放在記憶體的,這樣會非常的消耗記憶體的,但是如果我們使用生成器的話,每當處理乙個資料的時候,記憶體中只是相當於存了乙個資料...