Python 淺探生成器Generator

2021-08-21 09:36:50 字數 1651 閱讀 7574

類中同時包含有__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 語句的函式,就是生成器函式,呼叫後返...