Ich wollte die Summe der Quadrate bis n berechnen. Angenommen, n ist 4 erzeugt dann eine Liste dieser Code ein Kartenobjekt im Bereich von 0 bis 4:Python: 'Liste' auf einem Kartenobjekt zweimal aufrufen
m = map(lambda x: x**2, range(0,4))
Ease genug. Nun Liste m nennen, und dann Summe:
>>> sum(list(m))
>>> 14
Das unerwartete Verhalten ist, dass wenn ich die letzte Zeile wieder laufen, die Summe ist 0:
>>> sum(list(m))
>>> 0
Ich vermute, dass dies, weil ist die Liste aufrufen (m) gibt eine leere Liste zurück, aber ich kann keine Erklärung für dieses Verhalten finden. Kann mir jemand dabei helfen?
'map' ist ein * Iterator *, der vom ersten' listen' Aufruf konsumiert wird. Warum ordnest du 'list (m)' nicht zu und verwendest es wieder? – jonrsharpe
@jonrsharpe Ja, ich sehe das ist eine Alternative, aber ich wollte wissen, warum das passiert. Sie sagen also, dass list() den Iterator konsumiert? Kannst du mir mehr erzählen (oder wo finde ich mehr heraus)? – ADB
Python Tutorials/Dokumentation? Google-Suche nach * "python iterator" *? – jonrsharpe