2010-04-12 172 views
5

在Python中這樣做的最佳方式是什麼?Python中的For循環

for (v = n/2 - 1; v >= 0; v--) 

我真的試圖谷歌第一,但就我所看到的唯一的解決辦法是使用while

回答

13

做到這一點的方法是使用xrange()

for v in xrange(n // 2 - 1, -1, -1): 

(或者,在Python 3.x中,與range()代替xrange()//是地板事業部,這可以確保結果是一個整數。

+0

hughdbrown的版本應該標記爲正確答案 – rbp 2014-03-20 15:54:21

-1
for v in xrange(n/2 - 1, 0, -1): 
    #your code here 

其中v和n是int S或作爲int小號處理。這意味着該部門將是一個整數部門,即1/2 == 0 is True

注意:這是針對Python 2.x的。

+0

-1:這有一個太少的項目。它錯誤地忽略了'0'。另外,在python3中它失敗了,因爲'n/2'產生一個float('TypeError:'float'對象不能被解釋爲一個整數')。但也許這就是爲什麼你叫它爲python 2.x. – hughdbrown 2013-02-20 22:58:31

5
for v in range(n//2, -1, -1) 

然而,在90%的病例時,你會使用C /的Java/C#中的for環/ VB,你真正想要的是list comprehension

listOfStuff = [doSomethingWith(v) for v in range(n//2, -1, -1)] 
+0

-1:這有太多的項目。它錯誤地包含了'n // 2'。 – hughdbrown 2013-02-20 22:54:58

15

我會做到這一點:

for i in reversed(range(n // 2)): 
    # Your code 
    pass 

這是一個比較清楚,這是一個相反的順序,下限是什麼,什麼是上限。

+3

或「反轉(xrange(...))」,這也起作用。 – tzot 2010-04-12 22:48:53

+0

+1我喜歡這個最好 – 2010-04-12 23:02:03

+1

@ΤΖΩΤΖΙΟΥ:是的,但這並沒有你可能想到的好處。範圍()在3.0以前的python中一次拉取所有數據。 xrange()就像一個生成器,一次只能拉一個項目。但是如果你要反轉一個序列,你需要一次所有的數據,所以反轉(range())和反轉(xrange())將以同樣的方式工作:它們每個都將所有數據拉到它之前被顛倒過來。 – hughdbrown 2010-04-13 15:19:47