【发布时间】:2018-12-25 23:08:26
【问题描述】:
我有一个这样的二维列表:
thelist=[[0,0,0,0,0,0],
[1,0,0,0,0,0],
[0,1,0,0,0,0],
[0,0,1,0,0,0], # (3,2) is the 1 in this row
[0,0,0,1,0,0],
[0,0,0,0,1,0]]
我正在尝试获取通过给定坐标的 2d 列表的 2 条对角线。在上面的列表中,如果坐标是(3,2),那么这两个列表就是[1,1,1,1,1] 和[0,0,1,0,0,0]。
我已经看到了可以获取所有对角线或特定对角线的解决方案,但我无法在线找到可以获取通过一个点的对角线的解决方案。这是我尝试过的:
def find_diagonals(thelist,coor):
twodiag=[[],[]]
coor1=[coor[0]-min(coor),coor[1]-min(coor)]
coor2=[coor[0]-min(coor),coor[1]+min(coor)]
while True:
try:
twodiag[0].append(thelist[coor1[0]][coor1[1]])
coor1[0]+=1
coor1[1]+=1
except IndexError:
break
while True:
try:
twodiag[1].append(thelist[coor2[0]][coor2[1]])
coor2[0]+=1
coor2[1]-=1
except IndexError:
break
return twodiag
但是,它只正确返回一个对角线。如何修复此代码或以其他方式解决问题?如果有任何不清楚的地方,我很乐意在 cmets 中回答。谢谢!
【问题讨论】:
-
主对角线怎么可能是[1,1,1,1,1,1]???不在主对角线上的值都是零吗?
-
坐标 (3,2) 不在主对角线上(它在全 1 的对角线上)。
-
应该!抱歉打错了
-
无论如何,即使不在主对角线上,您的代码也可以工作
-
你的第二条对角线不应该是 [0, 0, 1, 0, 0, 0] 而不是 [0, 1, 0, 0, 0] 吗? (不小心把之前的评论删了抱歉。)
标签: python python-3.x list multidimensional-array