# 列表生成式
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 但是,上面的 看上去還是很笨啊,傻傻...