類中同時包含有__iter__()
方法和__next__()
方法的都是生成器。
常見的有幾種
eg.1 生成器generator
lst = [1,2,3,4]
generator = (x for x in lst)
注意這裡括號不是』』,否則生成將是乙個陣列。
相比於用』』生成的陣列,這裡僅生成了generator,而資料則在需要的時候才生成,這在資料量較大時有明顯的記憶體消耗優勢。
eg.2 生成器方法generator function
lst = [1,2,3,4]
defgetgenerator
():for t in lst:
yield t
generator = getgenerator()
凡是包含yield的方法都是generator function,這個方法呼叫後的返回值是乙個generator。
生成器的理念在於按需獲取,從而避免將資料一次性生成。可以通過next(generator)
或者generator.__next__()
來獲取生成的資料,需要注意的是獲取資料時如果超過了生成器擁有的資料量,將會丟擲乙個stopiteration的異常。
# 生成器
class
example
(object):
def__init__
(self):
self.m_lst = [
(1, '張三'),
(2, '李四'),
(3, '王五'),
(4, '趙六'),
]def
(self):
for t in self.m_lst:
yield t
def(self):
generator = (t for t in self.m_lst)
for t in generator:
print(t)
def(self, nbegin = 0):
def_enum
(): nidx = nbegin
while(true):
yield nidx
nidx += 1
return _enum().__next__
if __name__ == "__main__":
example = example()
# 應用一:生成器的基本使用
print(next(generator)) # (1, '張三')
print(next(generator)) # (2, '李四')
print(next(generator)) # (3, '王五')
print(next(generator)) # (4, '趙六')
# 應用二:遍歷
# 應用三:列舉
print(enum()) # 0
print(enum()) # 1
print(enum()) # 2
print(enum()) # 3
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...
python生成器好處 Python生成器筆記
python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...
python生成器函式 Python 生成器函式
一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...