Обратный и инвертировать двоичную матрицу с использованием одного списка понимания в Python - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть матрица A, и я сделал код, чтобы обратить и инвертировать его (добавлен отпечаток, чтобы показать, как выглядит матрица после каждого шага).

Код:

A = [[1,1,0],[1,0,1],[0,0,0]]
print(A)
# First step: reverse each row. So, for example, first row from 1,1,0 became 0,1,1
A = [x[::-1] for x in A]
print("Matrix after reverse each row:")
print(A)
# Second step: inverse. Replace each 1 with 0 and 0 with 1. So 0,1,1 will be 1,0,0
A = [[1-y for y in x] for x in A]
print("Matrix after invert")
print(A)

Выход:

[[1, 1, 0], [1, 0, 1], [0, 0, 0]]
Matrix after reverse each row:
[[0, 1, 1], [1, 0, 1], [0, 0, 0]]
Matrix after invert
[[1, 0, 0], [0, 1, 0], [1, 1, 1]]

Могу ли я создать одно понимание списка из двух шагов в приведенном выше коде?

1 Ответ

0 голосов
/ 17 сентября 2018

Просто используйте другой для зацикливания циклов над подсписками в вашем понимании списка. Здесь for j in x[::-1] будет перебирать элементы каждого подсписка, а 1-j даст вам то, что вы хотите.

A = [[1,1,0],[1,0,1],[0,0,0]]

A = [[1-j for j in x[::-1]] for x in A]
print (A)

выход

[[1, 0, 0], [0, 1, 0], [1, 1, 1]]
...