2016-11-12 118 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 ...