Python程式設計 generator生成器

2021-08-14 06:24:27 字數 2352 閱讀 1290

# 列表生成式

lst =

for i in range(10):

print(lst)

# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 相當於:

lst = [i * 2

for i in range(10)]

print(lst)

# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

lst = (i * 2

for i in range(10))

print(lst)

# at 0x0000000004200cf0>

"""生成器:

只用呼叫是才會生成相應的資料

只記錄當前位置

只有乙個__next__()

"""

# 菲波那切數列fibonacci

deffib

(max):

# 此時不能叫函式,應該叫生成器

n = 0

a, b = 0, 1

while n < max:

yield b # 返回當前值,並儲存當前狀態

a, b = b, a+b # 同時賦值

n = n+ 1

return

"異常訊息"

# 輸出異常資訊

f = fib(10)

print("===")

print(f.__next__()) # 下乙個值

print("===")

print(f.__next__())

print("==start loop==")

# for i in f:

# print(i)

while

true:

try:

g = next(f)

print(g)

except stopiteration as e:

print("value of e :", e.value)

break

"""out:

===1

===1

==start loop==23

581321

3455

value of e : 異常訊息

"""

import time

defconsumer

(name):

# 消費者

print("%s 來吃包子了!" % name)

while

true:

baozi = yield

print("%s 吃了第 %s 個包子" % (name, baozi))

defproducer

():# 生產者

a = consumer("a") #初始化乙個生成器

b = consumer("b")

a.__next__() #程式走到第乙個yield

b.__next__()

print("我要開始做包子了")

for i in range(10):

time.sleep(1)

print("第 %s 個包子" % i)

a.send(i) # 將資料傳送到 yield 位置,並執行一次next

b.send(i)

producer()

# consumer("a")

"""a 來吃包子了!

b 來吃包子了!

我要開始做包子了

第 0 個包子

a 吃了第 0 個包子

b 吃了第 0 個包子

第 1 個包子

a 吃了第 1 個包子

b 吃了第 1 個包子

第 2 個包子

a 吃了第 2 個包子

b 吃了第 2 個包子

第 3 個包子

a 吃了第 3 個包子

b 吃了第 3 個包子

第 4 個包子

a 吃了第 4 個包子

b 吃了第 4 個包子

第 5 個包子

a 吃了第 5 個包子

b 吃了第 5 個包子

第 6 個包子

a 吃了第 6 個包子

b 吃了第 6 個包子

第 7 個包子

a 吃了第 7 個包子

b 吃了第 7 個包子

第 8 個包子

a 吃了第 8 個包子

b 吃了第 8 個包子

第 9 個包子

a 吃了第 9 個包子

b 吃了第 9 個包子

"""

Python學習筆記 生成器(Generator)

python學習筆記 生成器 generator 擁有迭代序列的一致方式,比如列表裡的物件或檔案裡的行,是python的一項重要特性。這是通過迭代器協議的方式來完成的,一種生成可迭代物件的通用方式。例如,迭代乙個字典會生成字典鍵構成的集合。當我們書寫for key in mydict語句時,pyth...

python程式設計遊戲 python程式設計遊戲有哪些

1.github上面有個專案free python games,裡面集合了不少的python開發的小遊戲,能玩,也適合新手用來練練手,另外 pygame 這個 裡面裡面集合了很多python開發的小遊戲。3.小時候經常在手機上玩的乙個遊戲,也是一款經典的街機遊戲,這款遊戲進化之後其實就是乙個打桌球的...

python程式設計案例 python程式設計案例

利用python內建函式和列表物件方法def demo2 x,y,z i max x ipos x.index i j max y jpos y.index j k max z kpos z.index k return i j k,ipos,jpos,kpos 但是,上面的 看上去還是很笨啊,傻傻...