2010-11-13 47 views
38

循環在C/C++,我可以有以下循環for(int k = 1; k <= c ; k +=2)在Python中

如何做同樣的事情在Python?

我可以在Python中執行此操作for k in range(1,c):,這與C/C++中的for(int k = 1; k <= c ; k++)相同。

回答

31

你也應該知道,在Python中,遍歷整數索引是壞的風格,也比其他慢。如果您只想查看列表或字典中的每個項目,請直接通過列表或字典進行循環。

mylist = [1,2,3] 
for item in mylist: 
    print item 

mydict = {1:'one', 2:'two', 3:'three'} 
for key in mydict: 
    print key, mydict[key] 

這實際上是比使用具有範圍()上面的代碼速度更快,並移除外來i變量。

如果你需要編輯就地列表項,那麼你需要的指數,但還有一個更好的方法:

for i, item in enumerate(mylist): 
    mylist[i] = item**2 

再次,這是速度更快,被認爲更具可讀性。這是從C++到Python時所需要做出的主要轉變之一。

60

嘗試使用這樣的:

for k in range(1,c+1,2): 
+7

作爲一個側面說明,如果你正在使用Python 2.x的x範圍是更有效的。 – GWW 2010-11-13 02:42:43

+4

@GWW:xrange在技術上更有效_memory_,但除非你的範圍非常大,否則它幾乎沒有任何實際的後果,並且3.x徹底取消了「xrange」的名稱,所以使用它更容易混淆新手其他。 – 2010-11-13 02:58:49

+0

@尼古拉斯:我只是提到它,我真的不想混淆。當我在我的代碼中產生一個巨大的瓶頸時,我瞭解了xrange的難題。我不想讓其他人陷入困境:P – GWW 2010-11-13 03:03:09

9

如果你想用Python語言編寫一個循環打印一些整型值等,然後只要複製和佩特這樣的代碼,它的工作很多

 #Display Value from 1 TO 3 
    for i in range(1,4): 
    print "",i,"value of loop" 

     # Loop for dictionary data type 
    mydata = {"Fahim":"Pakistan", "Vedon":"China", "Bill":"USA" } 
    for user, country in mydata.iteritems(): 
    print user, "belongs to " ,country 
15

答案是好的,但對於那些希望人們這與range(),做形式是:

range(end)

>>> list(range(10)) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

range(start,end)

>>> list(range(1, 11)) 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

range(start,end, step)

>>> list(range(0, 30, 5)) 
[0, 5, 10, 15, 20, 25] 
4

在Python中,你通常對在循環中,而不是一般的像C/C++的循環,但是可以實現用下面的代碼同樣的事情。

for k in range(1, c+1, 2): 
    do something with k 

參考Loop in Python.