2016-11-12 157 views
0

如果我使用範圍(0,le),爲什麼第一個代碼沒有給出5,6,1所需的結果。我不得不使用(-1,le)來獲取最後一列的所有值。如果我使用正常列表for循環工作正常。在Python列表中查詢for for循環列表

def result(game): 
    print game 
    le = len(game)-1 
    print le 
    for i in range(0,le): 
     m = game[i][le] 
     print m 

winner = [[2, 2, 5],[2, 1, 6],[2, 1, 1]] 
result(winner) 

輸出:

[[2, 2, 5], [2, 1, 6], [2, 1, 1]] 
2 
5 
6 

第二個版本:

def result(game): 
    print game 
    le = len(game)-1 
    print le 
    for i in range(-1,le): 
     m = game[i][le] 
     print m 

winner = [[2, 2, 5],[2, 1, 6],[2, 1, 1]] 
result(winner) 

輸出:

[[2, 2, 5], [2, 1, 6], [2, 1, 1]] 
2 
1 
5 
6 

感謝所有爲你的答案。

一個關於同一代碼的其他問題 -

你能澄清另一件事給我嗎?說如果我在上面的代碼中使用以下內容 - >

le = len(game) 
print le 
for i in range(0,le): 

爲什麼我會收到以下錯誤?

Traceback (most recent call last):                                    
    File "main.py", line 10, in <module>                                   
    result(winner)                                        
    File "main.py", line 6, in result                                    
    m = game[i][le]                                        
IndexError: list index out of range 
+1

你應該把你的輸出這裏與鏈接到另一個網站的截圖。 – AChampion

+0

'range(start,stop)'不包含'stop'值。所以你的'le'就是一個。範圍(0,le + 1)'可以解決你的問題。 – AChampion

+0

非常感謝@AChampion提供了有關問題格式的答案和指導。 –

回答

0

輸出是正確的,原因是le = len(game)-1,當你在for循環中使用range(0,le)時,你實際上永遠不會到達最後一個索引!

舉一個簡單的例子:

a=[[2, 2, 5], [2, 1, 6], [2, 1, 1]] 

現在打印,

a[0][2] ==> 5

a[-1][2] ==> 1

因此,在你的第二個情況下,你獲得1因爲你從最後而不是從頭開始計數數組!

在你的情況下使用:

def result(game): 
    print game 
    le = len(game)-1 
    print le 
    for i in range(0,len(game)): 
     m = game[i][le] 
     print m 

winner = [[2, 2, 5],[2, 1, 6],[2, 1, 1]] 
result(winner) 
0

range(start, stop)包含所有從startstop-1的數字: 例如

>>> list(range(0,2)) 
[0, 1] 
>>> list(range(0,3)) 
[0, 1, 2] 
0

正如@Itay指出的,range不包括最後一個值。你只需要你的循環更改爲:通過所有嵌套列表以正確的順序

for i in range(0,le+1): 

爲它循環。順便說一句:如果你仔細觀察,你的第二個解決方案也不會給你所需的解決方案。如果您開始在-1範圍內打印值game[-1][le]這是game[2][le]相同。所以你基本上從最後一行開始,然後到第二個解決方案的第一行和第二行。

0

的問題是與range第二個參數:

for i in range(inclusive, exclusive): 
    do ...