给定一个mxn矩阵和一个元素的索引,如何使用纯python(没有numpy或任何矩阵包)来获得包含该元素的两个对角线?
例如:
1 2 3 4
5 6 7 8
9 10 11 12
0 1 0 1
给定元素(1,2),我可以得到主对角线:[2,7,12]和[4,7,10,0]。我已经看过this post了,但我不在乎把矩阵包裹起来。此外,我很难理解这个解决方案,因此我无法重新编写它以满足我的需求。
答案 0 :(得分:0)
这是在 Pure Python ™中实现您想要的东西:
mat = [[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[ 0, 1, 0, 1]]
def get_diags(mat, i0, j0):
""" Return both diagonals that contain element mat[i0][j0]. """
height, width = len(mat), len(mat[0])
summ, diff = i0+j0, i0-j0
diag1, diag2 = [], []
for i in range(height):
for j in range(width):
if i-j == diff:
diag1.append(mat[i][j])
if i+j == summ:
diag2.append(mat[i][j])
return diag1, diag2
print(get_diags(mat, 1, 2)) # -> ([2, 7, 12], [4, 7, 10, 0])