有关列表追溯功能的错误

时间:2015-12-04 10:14:25

标签: python list

我试图返回从最后一行开始的元素,它们等于1而不是零。然后通过垂直,水平和对角线与相邻元素进行比较来追溯下一个元素。如果下一个元素为零,则返回位置,否则继续,直到我们到达下一个元素为零的位置,从而返回位置。 我写了以下程序:

def test():
        M=[[0, 0, 0, 0, 0, 0, 0],
                [1, 0, 0, 1, 0, 0, 1],
                [2, 1, 0, 0, 1, 0, 0]]

            list=[]

for i in range(2,0,-1):
    for j in range(6,0,-1):
        if M[i,j]!=0 and M[i,j]<=k:
            s=max(M[i,j-1],M[i-1,j-1],M[i-1,j])
            if s==0:
                list.append(j+1)
            else:
                s=M[i,j]
        elif j==0:
            for i in range(2,0,-1):
                if M[i,j]!=0 and M[i,j]<=k:
                    s=M[i-1,j]
                    if s==0:
                        list.append(j+1)
                    else:
                        s=M[i,j]
return list
    print(test())
Expected answer will be 1,4,7

它返回了我的值4,7但是1没有显示,有人可以建议我添加它还返回值“1”吗?我已经尝试编辑代码,但它仍然显示相同的结果。< / p>

1 个答案:

答案 0 :(得分:0)

在前面的代码中替换此部分可以解决问题。

list=[] 
        for i in range(2,0,-1):
            for j in range(6,-1,-1):
                if M[i,j]!=0 and M[i,j]<=k:
                    s=max(M[i,j-1],M[i-1,j-1],M[i-1,j])
                    if s==0:
                        list.append(j+1)
                    else:
                        s=M[i,j]
                elif j==0:
                    for i in range(0,2):
                        if M[i,j]!=0 and M[i,j]<=k:
                            s=M[i-1,j]
                            if s==0:
                                list.append(j+1)
                            else:
                                s=M[i,j]
        return list