Python: next () -Funktion
Lerne ich Python aus einem Buch, und stieß ich auf dieses Beispiel:
M = [[1,2,3],
[4,5,6],
[7,8,9]]
G = (sum(row) for row in M) # create a generator of row sums
next(G) # Run the iteration protocol
Da ich ein absoluter Anfänger, und der Autor hat nicht vorgesehen, eine Erklärung für das Beispiel oder die next () - Funktion, die ich nicht verstehe, was der code macht.
InformationsquelleAutor der Frage 3zzy | 2009-11-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Ausdruck
(sum(row) for row in M)
erstellt was heißt eine generator. Dieser generator wird der Ausdruck ausgewertet (sum(row)
) einmal für jede Zeile inM
. Aber der generator nicht alles tun, aber wir haben gerade stellen.Die Aussage
next(G)
eigentlich läuft der generator aufM
. Also, wenn Sie Sie ausführennext(G)
einmal, erhalten Sie die Summe der ersten Zeile. Wenn Sie es erneut ausführen, erhalten Sie die Summe in der zweiten Zeile, und so weiter.Siehe auch:
InformationsquelleAutor der Antwort jtbandes
Wenn Sie schon kommen, die weit sind, dann sollten Sie bereits wissen, wie eine gewöhnliche for-in-Anweisung arbeitet.
Folgende Aussage:
sehen würde M als eine Folge aus 3 Zeilen (sub-Sequenzen), bestehend aus 3 Elemente, jedes, und Durchlaufen werden, M, die Ausgabe jeder Zeile der matrix:
Sie wusste, dass, auch...
Können Sie sehen, Generatoren, ebenso wie einige syntaktische Zucker um for-in-Schleifen.
Vergessen Sie die sum () - Aufruf, und geben Sie etwas wie dieses auf LEERLAUF:
Sehen Sie, dass der Generator nicht direkt als text dargestellt, nicht nur als eine Sequenz sein kann.
Aber, können Sie Durchlaufen einen Generator an, als wäre es eine Sequenz.
Finden Sie einige große Unterschiede, aber die Grundlagen sind, können Sie mit einem generator, nicht zurückzukehren, nur der Wert der einzelnen posten in der Reihenfolge, aber das Ergebnis eines Ausdrucks. In dem tutorial-Beispiel, der Ausdruck ist die Summe(Zeile).
Folgendes versuchen und sehen, was passiert:
InformationsquelleAutor der Antwort Simón