2010-04-12 11 views
5

¿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.

Respuesta

13

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 .

+0

La versión de hughdbrown debe marcarse como la respuesta correcta – rbp

-1
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.

+0

-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

5
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)] 
+0

-1: Esto tiene demasiados elementos. Incorrectamente incluye 'n // 2'. – hughdbrown

15

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.

+3

o 'invertido (xrange (...))', eso también funciona. – tzot

+0

+1 Me gusta más –

+1

@ ΤΖΩΤΖΙΟΥ: 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