Was ist der beste Weg, dies in Python zu tun?For-Schleifen in Python
for (v = n/2 - 1; v >= 0; v--)
ich tatsächlich versucht Google zuerst, aber soweit ich die einzige Lösung while
zu verwenden wäre zu sehen.
Was ist der beste Weg, dies in Python zu tun?For-Schleifen in Python
for (v = n/2 - 1; v >= 0; v--)
ich tatsächlich versucht Google zuerst, aber soweit ich die einzige Lösung while
zu verwenden wäre zu sehen.
Die Art und Weise, es zu tun mit xrange()
:
for v in xrange(n // 2 - 1, -1, -1):
(Oder in Python 3.x, mit range()
statt xrange()
.) //
ist Bodenbelags-Geschäftsbereich, der das Ergebnis stellt sicher, dass eine ganze Zahl ist .
for v in xrange(n/2 - 1, 0, -1):
#your code here
Wo v und n int
s oder als int
s behandelt. Dies bedeutet, dass die Division eine ganzzahlige Division ist, d. H. 1/2 == 0 is True
.
Hinweis: Dies ist für Python 2.x.
-1: Dies hat ein zu wenig Elemente. Es enthält fälschlicherweise "0". Separat, in Python3 schlägt es fehl, weil 'n/2' einen Gleitkommawert generiert (' TypeError: 'float' Objekt kann nicht als Integer interpretiert werden). Aber vielleicht hast du deswegen gesagt, dass es für Python 2.x ist. – hughdbrown
for v in range(n//2, -1, -1)
jedoch in 90% der Fälle, wenn Sie in C/Java/C#/VB eine for
Schleife verwendet haben würde, was Sie wirklich wollen, ist list comprehension:
listOfStuff = [doSomethingWith(v) for v in range(n//2, -1, -1)]
-1: Dies hat eine zu viele Elemente. Es enthält fälschlicherweise 'n // 2'. – hughdbrown
ich dies tun würde :
for i in reversed(range(n // 2)):
# Your code
pass
Es ist ein bisschen klarer, dass dies ein umgekehrter Reihenfolge, was die untere Grenze ist, und das, was die obere Grenze ist.
oder umgekehrt (xrange (...)) ', das funktioniert auch. – tzot
+1 Ich mag dies am besten –
@ ΤΖΩΤΖΙΟΥ: stimmt, aber das hat nicht den Vorteil, den Sie vielleicht denken. Bereich() in Pre-3.0 Pythons zieht alle Daten auf einmal. xrange() verhält sich wie ein Generator und zieht nur einen Gegenstand nach dem anderen. Aber wenn Sie eine Sequenz umkehren, benötigen Sie alle Daten auf einmal, also umgekehrt (range()) und umgekehrt (xrange()) wird auf die gleiche Weise funktionieren: Sie werden alle Daten davor gezogen haben ist umgekehrt. – hughdbrown
Hughdbrowns Version sollte als die richtige Antwort markiert werden – rbp