2013-07-06 20 views
2
for iteration in range(len(list) - 1): 
    index = iteration +1 #This is the line which has no effect on the inner loop 
    for index in range(len(list)): 
    if list[iteration] > list[index]: 
     newmin = list[index] 
     newminindex = index   
    if iteration != newminindex : 
    swapnumbers(list,iteration, newminindex) 

以上是我爲選擇排序算法編寫的代碼片段。但是我看到內部循環啓動計數器總是從0開始。請求專家評論。Python for循環啓動計數器初始化

+0

當你說'範圍(15)'(例如)時,它確實說'範圍(0,15)'。只使用一個參數爲你(程序員)簡化它,但它確實在說後者。你應該將它簡化爲'用於範圍內的索引(iteration + 1,len(myList)):'。另外,儘量不要像你在這裏那樣重用變量名稱。當你說'在...中索引'時,你重置之前給出的索引值。正如我假設你想的那樣,在之前設置索引不會影響'for'循環中的起始值。 index的值被更改爲'range(oneArg)':0的默認值,並且帶有2個參數,即第一個值。 – erdekhayser

回答

0
for index in range(iteration + 1, len(list)) 
+0

另外,arshajii對保留關鍵字的說法,「list」 – bojangler

+0

'list'不是關鍵字。這是一個內建的標識符;重新分配它是有效的,但通常是一個壞主意。 – user2357112

0

試試這個:

for index in range(iteration + 1, len(l)): # don't use "list" as a name 

index被該for -loop所以index = iteration + 1內重新分配無論如何不會有任何影響。

6

for index in range(len(list))環與index第一組到0,然後1,然後2等,至多len(list) - 1執行循環體。之前的值index被忽略並被覆蓋。如果你想indexiteration + 1開始,使用的range 2個參數的形式:

for index in range(iteration + 1, len(list)): 
3

你真的應該使用enumerate像這樣的東西,你可以通過在同一時間索引和值循環(這將爲您節省使用兩個for-loop的麻煩)。

for i, j in enumerate(list): 
    print i, j 

你的內循環覆蓋您在第一循環中定義的變量index