使用生成器迭代資料建構(gòu)遺失問題,同樣的程式碼運(yùn)行結(jié)果不一致:
檔案方式運(yùn)行得到結(jié)果為:5 2 1 0
Python自備IDLE運(yùn)行得到結(jié)果為:5 3 2 1 0
def countdown(n):
while n >= 0:
newvalue = (yield n)
if newvalue is not None:
n = newvalue
else:
n -= 1
c = countdown(5)
for n in c:
print(n)
if n == 5:
c.send(3)
不要對(duì)正在遍歷的對(duì)象進(jìn)行修改, 那樣會(huì)導(dǎo)致索引混亂, 無法達(dá)到我們想要的結(jié)果, 可以通過enumerate查看遍歷過程中, 索引的變化
for index, n in enumerate(c):
# index 為取到的索引值
print(index, n)
if n == 5:
c.send(3)