Я пытаюсь получить диагональ от матрицы в Python без использования numpy
(я действительно не могу его использовать). Кто-то здесь знает, как это сделать?Получить диагональ без использования numpy?
Пример того, что я хочу получить:
get_diagonal ([[1,2,3,4],[5,6,7,8],[9,10,11,12]], 1, 1, 1)
Result: [1, 6, 11]
Или как:
get_diagonal ([[1,2,3,4],[5,6,7,8],[9,10,11,12]], 1, 2, 1)
Result: [2, 7, 12]
До знаю, я пробовал много вещей, но не работает.
def obter_diagonal(matrix, line, column, direc):
d = []
if direc == 1:
for i in matrix:
for j in i:
if all(i == line, j == column):
d.extend(matrix[i][j])
else:
for i in matrix:
for j in i:
d.extend[len(matrix)-1-i][j]
return d
Если direc==1
мне нужно, чтобы получить диагональ, которая идет от лево-> правой, топ-> внизу.
Если direc==-1
необходимо получить диагноз, который идет справа-> влево, сверху-> снизу.
Тот факт, что '' i0' и j0' аргументы позиции не представляют прямой индекс элемент в 'm' запутан, потому что последовательности в Python индексируются начиная с нуля, а не из-за того, что они есть. Другими словами, 'get_diagonal (m, 1, 4, 1)' найти диагональ элемента 'm [0] [3]' not 'm [1] [4]', как полагает большинство. – martineau
Изменение 'get_diagonal()' to 'return [m [(i0 + i)% len (m)] [(j0 + d * i)% len (m [0])] для i в диапазоне (len (m))]) 'будет приводить значения аргументов' i0' и 'j0' к значениям индекса на основе нуля, как это принято. – martineau
Я предполагаю, что я использовал индексирование на основе 1, потому что это то, чего хотел OP из примеров, приведенных в вопросе. – bcorso