嘿我寫一個函數,它接受一個矩陣輸入,例如下面的一個,並返回它的逆,其中所有的1秒被改變爲0和所有的0改變爲1秒,同時保持從左上角到右下角0s的對角線。蟒矩陣 - 列表索引超出範圍
一個例子輸入:
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
我想,如果你花一些時間來學習[list comprehensions](http://www.python.org/dev/peps/pep-0202/),那麼你的代碼的可讀性,正確性和速度會大大提高。 ) – erikbwork
如果你使用了很多矩陣/二維數組,NumPy非常有用。 – ninMonkey