Quelle est la meilleure façon de faire cela en Python?For-loops en Python
for (v = n/2 - 1; v >= 0; v--)
J'ai essayé Google d'abord, mais aussi loin que je peux voir la seule solution serait d'utiliser while
.
Quelle est la meilleure façon de faire cela en Python?For-loops en Python
for (v = n/2 - 1; v >= 0; v--)
J'ai essayé Google d'abord, mais aussi loin que je peux voir la seule solution serait d'utiliser while
.
La façon de le faire est avec xrange()
:
for v in xrange(n // 2 - 1, -1, -1):
(Ou, en Python 3.x, avec range()
au lieu de xrange()
.) //
est division Flooring, ce qui fait que le résultat est un nombre entier .
for v in xrange(n/2 - 1, 0, -1):
#your code here
où v et n sont int
s ou traité comme int
s. Cela signifie que la division sera une division entière, c'est-à-dire, 1/2 == 0 is True
.
Remarque: Ceci est pour Python 2.x.
-1: Ceci a un trop peu d'articles. Il omet incorrectement '0'. Séparément, dans python3, il échoue car 'n/2' génère un flottant (' TypeError: 'float' ne peut pas être interprété comme un entier). Mais peut-être est-ce la raison pour laquelle vous avez dit que c'est pour python 2.x. – hughdbrown
for v in range(n//2, -1, -1)
Cependant, dans 90% des cas où vous auriez utilisé une boucle for
en C/Java/C#/VB, ce que vous voulez vraiment est list comprehension:
listOfStuff = [doSomethingWith(v) for v in range(n//2, -1, -1)]
-1: Cela a un trop d'éléments. Il inclut incorrectement 'n // 2'. – hughdbrown
je referais ce :
for i in reversed(range(n // 2)):
# Your code
pass
Il est un peu plus clair que c'est une séquence inverse, quelle est la limite inférieure et quelle est la limite supérieure.
ou 'reverse (xrange (...))', ça marche aussi. – tzot
+1 J'aime plus –
@ ΤΖΩΤΖΙΟΥ: true, mais cela n'a pas l'avantage que vous pourriez en espérer. range() dans pythons pré-3.0 tire toutes les données à la fois. xrange() agit comme un générateur, ne tirant qu'un seul élément à la fois. Mais si vous voulez inverser une séquence, vous avez besoin de toutes les données à la fois, donc inversé (range()) et inversé (xrange()) fonctionnera de la même manière: ils auront chacun toutes les données tirées avant est inversé. – hughdbrown
La version de hughdbrown devrait être marquée comme la bonne réponse – rbp