Значения массива в форме tri angular Python - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь получить значения из данного массива в прямоугольном три angular форме. Я пробовал следующий код:

matrix =     [[1,2,3],
          [4,5,6],
          [7,8,9],
          [10,11,12]]

row = 3
col =3

new = []

for i in range(0, row):

    for j in range(0, col):

        if (i > j):

            print("", end=" ")

        else:
            new.append(new[i][j])

                 end=" ")
print(new)

Однако это делает новый список «новым» со значениями 1, 2, 3, 5, 6, 9. Таким образом, треугольник идет к правой стороне массив. Я хочу, чтобы этот новый список имел значения 1, 2, 3, 4, 5, 7 вместо этого. Я знаю, что проблема со вторым для l oop, но я попытался поэкспериментировать с кодом и не смог сделать его совершенно правильно.

1 Ответ

1 голос
/ 04 апреля 2020

Вы можете сделать следующее:

>>> [row[:i] for row, i in zip(matrix, range(3, 0, -1))]
[[1, 2, 3], [4, 5], [7]]

Это требует уменьшения срезов строк в матрице на zipping матрицы с range соответствующей остановки. И если вам нужен плоский список, вы можете вложить понимание:

>>> [x for row, i in zip(matrix, range(3, 0, -1)) for x in row[:i]]
[1, 2, 3, 4, 5, 7]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...