Если вы думаете об этом как о графике на 2D плоскости.Строка - это y
, а столбец - x
.Тем не менее, определение Python индекса строки увеличивается вниз, поэтому «y» переворачивается.Это означает, что начало координат находится в верхнем левом углу, и значение y увеличивается по мере его понижения.
Это означает 2 вещи:
- Вы можете перевернуть строки своего списка и использовать уже имеющуюся функцию
- Или вы можете создать новую функциюне касаясь списка.Логика приведена ниже.
'y' при переворачивании означает, что нужная вам диагональ - это, по сути, следующая функция
y = c - x
. А поиск c
позволит вам найти диагональ.Естественно,
c = x + y
Итак, чтобы найти самый правый столбец или столбец с наибольшим индексом,
rightmost_row = min(len(m)-1, c)
Чтобы найти самый нижний ряд, соблюдайте
x = c - y
Итак
lowest_row = c - rightmost_row
Затем вы можете перемещаться сверху вниз справа налево.Ваш текущий код перемещается из левого верхнего угла в нижний правый.
Приведенный ниже код дает вам левую диагональ.
def ldiagonal(m, x, y):
#c
c = x + y
#x
col = min((c, len(m)-1))
#y
row = c - col
while col >= 0 and row < len(m[row]):
yield m[row][col]
col -= 1
row += 1
Надеюсь, что это поможет вам начать.