Was ist pythonischer?
While-Schleife:
count = 0
while count < 50:
print "Some thing"
count = count + 1
For-Schleife:
for i in range(50):
print "Some thing"
Bearbeiten: nicht duplizieren, da dies Antworten enthält, um zu bestimmen, welche klarer sind, als wie ein Bereich ohne 'i' ausgeführt werden soll - obwohl dies am elegantesten war
Antworten:
Persönlich:
wenn du nicht brauchst
i
. Wenn Sie Python <3 verwenden und die Schleife häufig wiederholen möchten, verwenden Sie diese Option,xrange
da Sie nicht die gesamte Liste im Voraus generieren müssen.quelle
_
Variable. Das hätte ich vorgeschlagen.i
.i
?Die for-Schleife ist definitiv pythonischer, da sie die übergeordnete integrierte Funktionalität von Python verwendet, um klarer und präziser zu vermitteln, was Sie tun. Der Overhead von range vs xrange und das Zuweisen einer nicht verwendeten
i
Variablen ergibt sich aus dem Fehlen einer Anweisung wie der von Verilogrepeat
. Der Hauptgrund, sich an die for range-Lösung zu halten, ist, dass andere Wege komplexer sind. Zum Beispiel:Die Verwendung von Wiederholung anstelle von Bereich ist hier weniger klar, da es sich nicht um eine so bekannte Funktion handelt, und komplexer, weil Sie sie importieren müssen. Die wichtigsten Styleguides, wenn Sie eine Referenz benötigen, sind PEP 20 - Das Zen von Python und PEP 8 - Styleguide für Python-Code .
Wir stellen außerdem fest, dass die for range-Version ein explizites Beispiel ist, das sowohl in der Sprachreferenz als auch im Lernprogramm verwendet wird , obwohl in diesem Fall der Wert verwendet wird. Dies bedeutet jedoch, dass die Form vertrauter ist als die while-Erweiterung einer for-Schleife im C-Stil.
quelle
for s in repeat('This is run 10 times', 10): print s
??range()
twitter.com/raymondh/status/1144527183341375488int
für jede Iteration nachschlagen oder ein anderes Objekt erstellen muss . Die Programmierzeit kann jedoch wertvoller sein als die Ausführungszeit.Wenn Sie nach den Nebenwirkungen suchen, die innerhalb der Schleife auftreten, würde ich mich persönlich für den
range()
Ansatz entscheiden.Wenn Sie sich für das Ergebnis der Funktionen interessieren, die Sie innerhalb der Schleife aufrufen, würde ich mich für ein Listenverständnis oder einen
map
Ansatz entscheiden. Etwas wie das:quelle
Wie wäre es mit?
oder auf hässlichere Weise:
oder wenn Sie das letzte Mal durch fangen wollen:
wo:
quelle
Es gibt keine wirklich pythonische Art, etwas zu wiederholen. Es ist jedoch ein besserer Weg:
Wenn Sie den Index übergeben müssen, dann:
Beachten Sie, dass die Ergebnisse als Sammlung zurückgegeben werden. Wenn Sie also die Ergebnisse sammeln müssen, kann dies hilfreich sein.
quelle