我试图返回从最后一行开始的元素,它们等于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>
答案 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