搜尋

首頁  >  問答  >  主體

python - 用生成器迭代資料在檔案和IDLE中運行結果不一致,

使用生成器迭代資料建構遺失問題,同樣的程式碼運行結果不一致:

  1. 檔案方式運行得到結果為:5 2 1 0

  2. Python自備IDLE運行得到結果為: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)

#
过去多啦不再A梦过去多啦不再A梦2795 天前630

全部回覆(1)我來回復

  • 迷茫

    迷茫2017-05-18 11:03:04

    不要對正在遍歷的對象進行修改, 那樣會導致索引混亂, 無法達到我們想要的結果, 可以通過enumerate查看遍歷過程中, 索引的變化

    for index, n in enumerate(c):
        # index 为取到的索引值
        print(index, n)
        if n == 5:
            c.send(3)
            

    回覆
    0
  • 取消回覆