Heim  >  Fragen und Antworten  >  Hauptteil

Die Iteration über Daten mit laufendem Generator in der Datei und im Leerlauf führt zu inkonsistenten Ergebnissen.

Die Verwendung eines Generators zum Iterieren von Daten führt zu einem fehlenden Problem, und derselbe Code wird mit inkonsistenten Ergebnissen ausgeführt:

  1. Das Ergebnis der Ausführung im Dateimodus ist: 5 2 1 0

  2. Python wird mit IDLE geliefert und das Ergebnis ist: 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梦2732 Tage vor581

Antworte allen(1)Ich werde antworten

  • 迷茫

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

    不要对正在遍历的对象进行修改, 那样会导致索引混乱, 无法达到我们想要的结果, 可以通过enumerate查看遍历过程中, 索引的变化

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

    Antwort
    0
  • StornierenAntwort