嘿,我正在编写一个函数,它接受一个矩阵输入,例如下面的一个并返回它的逆矩阵,其中所有的 1 都更改为 0,所有的 0 都更改为 1,同时保持从左上角到右下角的对角线为 0。
示例输入:
g1 = [[0, 1, 1, 0],
[1, 0, 0, 1],
[1, 0, 0, 1],
[0, 1, 1, 0]]
该函数应输出以下内容:
g1 = [[0, 0, 0, 1],
[0, 0, 1, 0],
[0, 1, 0, 0],
[1, 0, 0, 0]]
当我运行该程序时,它会引发“列表索引超出范围”错误。我确定这是因为我设置的循环试图访问不存在的值,但是我如何允许输入未知的行和列大小?我只知道如何使用单个列表来执行此操作,但是列表列表?这是函数,不包括调用它的测试函数:
def inverse_graph(graph):
# take in graph
# change all zeros to ones and ones to zeros
r, c = 0, 0 # row, column equal zero
while (graph[r][c] == 0 or graph[r][c] == 1): # while the current row has a value.
while (graph[r][c] == 0 or graph[r][c] == 1): # while the current column has a value
if (graph[r][c] == 0):
graph[r][c] = 1
elif (graph[r][c] == 1):
graph[r][c] = 0
c+=1
c=0
r+=1
c=0
r=0
# sets diagonal to zeros
while (g1[r][c] == 0 or g1[r][c] == 1):
g1[r][c]=0
c+=1
r+=1
return graph