Python中的生成器

2021-09-25 21:37:48 字數 1577 閱讀 9939

1.生成器的介紹

根據程式設計師制定的規則迴圈生成資料,當條件不成立時則生成資料結束。資料不是一次性全部生成出來,而是使用乙個,再生成乙個,可以節約大量的記憶體。

2.建立生成器的方式

(1)推導式列表

(2)yield關鍵字

3.生成器推導式

# 建立生成器

my_generator = (i * 2 for i in range(5))

print(my_generator)

# next 可以獲取生成器的下乙個值

# value = next(my_generator)

# print(value)

# 遍歷生成器

for value in my_generator:

print(value)

執行結果

at 0x101367048>02

468

說明:

4.yield關鍵字

只要在函式中看到了yield這個關鍵字那就是生成器

def my_generator(n):

for i in range(n):

print("開始生成...")

yield i

print("完成一次...")

if __name__ == '__main__':

g = my_generator(2)

for i in g :

print(i)

執行結果:

開始生成...

0完成一次...

開始生成...

1完成一次...

說明:

3.生成器的使用場景

數學中有個著名的斐波拉契數列(fibonacci),數列中第乙個數為0,第二個數為1,其後的每乙個數都可由前兩個數相加得到:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

現在我們使用生成器來實現這個斐波那契數列,每次取值都通過演算法來生成下乙個資料,生成器每次呼叫只生成乙個資料,可以節省大量的記憶體。

def fibo(n):

a = 0

b = 1

# 記錄生成fibo數字的下標

index = 0

while index < n :

s = a

a, b = b , a + b

index += 1

#**執行到yield會暫停,然後把結果返回出去,下次啟動生成器會在暫停的位置繼續往下執行

yield s

fibo = fibo(5)

# 遍歷生成的資料

for i in fibo:

print(i)

說明:

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 語句的函式,就是生成器函式,呼叫後返...