¿Cuál es la mejor manera de hacerlo en Python?For-Loops en Python
for (v = n/2 - 1; v >= 0; v--)
De hecho, me trataron de Google en primer lugar, pero por lo que puedo ver la única solución sería utilizar while
.
¿Cuál es la mejor manera de hacerlo en Python?For-Loops en Python
for (v = n/2 - 1; v >= 0; v--)
De hecho, me trataron de Google en primer lugar, pero por lo que puedo ver la única solución sería utilizar while
.
La manera de hacerlo es con xrange()
:
for v in xrange(n // 2 - 1, -1, -1):
(O, en Python 3.x, con range()
en lugar de xrange()
.) //
es la división de suelos, lo que hace que el resultado sea un número entero .
for v in xrange(n/2 - 1, 0, -1):
#your code here
donde V y N son int
s o tratado como int
s. Esto significa que la división será una división entera, es decir, 1/2 == 0 is True
.
Nota: Esto es para Python 2.x.
-1: tiene muy pocos elementos. Omite incorrectamente '0'. Por separado, en python3 falla porque 'n/2' genera un float (el objeto' TypeError: 'float' no se puede interpretar como un entero'). Pero tal vez es por eso que llamaste que es para python 2.x. – hughdbrown
for v in range(n//2, -1, -1)
Sin embargo, en el 90% de los casos en los que habría utilizado un bucle for
en C/Java/C#/VB, lo que realmente quiere es list comprehension:
listOfStuff = [doSomethingWith(v) for v in range(n//2, -1, -1)]
-1: Esto tiene demasiados elementos. Incorrectamente incluye 'n // 2'. – hughdbrown
Me gustaría hacer esto :
for i in reversed(range(n // 2)):
# Your code
pass
es un poco más claro que se trata de una secuencia inversa, lo que el límite inferior es, y lo que el límite superior es.
o 'invertido (xrange (...))', eso también funciona. – tzot
+1 Me gusta más –
@ ΤΖΩΤΖΙΟΥ: cierto, pero esto no tiene el beneficio que pueda pensar. range() en pre-3.0 pitones extrae todos los datos a la vez. xrange() actúa como un generador, tirando solo de un elemento a la vez. Pero si va a invertir una secuencia, necesita todos los datos a la vez, por lo que los valores invertidos (rango()) e invertido (xrange()) funcionarán de la misma manera: cada uno de ellos tendrá todos los datos extraídos antes está alreves. – hughdbrown
La versión de hughdbrown debe marcarse como la respuesta correcta – rbp