Die Iteration über Daten mit laufendem Generator in der Datei und im Leerlauf führt zu inkonsistenten Ergebnissen.
过去多啦不再A梦
过去多啦不再A梦 2017-05-18 11:01:04
0
1
579

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梦

Antworte allen(1)
迷茫

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

for index, n in enumerate(c):
    # index 为取到的索引值
    print(index, n)
    if n == 5:
        c.send(3)
        
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!