使用python中的一个列表理解来反转和反转二进制矩阵

时间:2018-09-17 11:40:57

标签: python list matrix list-comprehension

我有矩阵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 :(得分:2)

只需使用另一个循环遍历列表理解中的子列表即可。在这里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]]