gpt4 book ai didi

python - 如何获得通过给定点的嵌套列表的对角线 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:03 24 4
gpt4 key购买 nike

我有一个像这样的二维列表:

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

但是,它只能正确返回一条对角线。如何修复此代码或以其他方式解决问题?如果有任何不清楚的地方,我很乐意在评论中回答。谢谢!

最佳答案

使用 numpy 的解决方案:

import numpy as np
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,1,0,1,0]]
lst = matrix = np.array(thelist)

i, j = 3, 2 #position of element
major = np.diagonal(lst, offset=(j - i))
print(major)

minor = np.diagonal(np.rot90(lst), offset=-lst.shape[1] + (j + i) + 1)
print(minor)

输出:

[1 1 1 1 1]
[0 0 0 1 0 0]

关于python - 如何获得通过给定点的嵌套列表的对角线 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51395078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com