python - 用生成器迭代資料在檔案和IDLE中運行結果不一致,
过去多啦不再A梦
过去多啦不再A梦 2017-05-18 11:01:04
0
1
580

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

  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梦

全部回覆(1)
迷茫

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

for index, n in enumerate(c):
    # index 为取到的索引值
    print(index, n)
    if n == 5:
        c.send(3)
        
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!