У меня есть матрица (сформированная из списка списков), которая будет выглядеть примерно так:
matrix = [[0, 0, 0, 0, 5],
[0, 0, 0, 4, 0],
[2, 0, 3, 0, 0],
[3, 2, 0, 2, 0],
[1, 0, 2, 0, 1]]
Я пытаюсь создать функцию, которая будет принимать эту матрицу в качестве входных данных вместе с положение в матрице, представленное кортежем, и возвращает две диагонали, которые пересекают эту точку ( без использования NumPy). Например,
def getDiagonal(matrix, pos)
(row, col) = pos
# Smart diagonal finder code #
return (diag1, diag2)
diagonals = getDiagonals(matrix, (1, 1))
print(diagnonal[0])
print(diagnonal[1])
print(' ')
diagonals = getDiagonals(matrix, (1, 3))
print(diagnonal[0])
print(diagnonal[1])
Ожидаемый результат:
OUT: [5, 4, 3, 2, 1]
OUT: [2, 2, 2]
OUT:
OUT: [0, 2, 2]
OUT: [0, 0, 3, 2, 1]
Стоит отметить, что я не против, в каком направлении (снизу вверх или сверху вниз) ) возвращаемые элементы диагоналей. Их можно легко сделать одним способом и почитать, используя reverse()
, если это необходимо.
Я рассматривал похожие вопросы, такие как этот , но это в основном касается получения ведущих диагоналей матрица и предоставляет меньше информации о получении диагоналей о точке.
Большое спасибо за вашу помощь и комментарии заранее!