1
我試圖做一些與列表的Python列表,但我發現了一些奇怪的索引。
如果我想創建一個2 * 2「矩陣」,我做Python列表索引
matrix = [[0]*2]*2
然後,如果我想使用,比如改變第一行第一列,
matrix[0][0] = 1
我會得到[[1,0],[1,0]]
,而不是[[1,0],[0,0]]
。有誰知道出了什麼問題?
我試圖做一些與列表的Python列表,但我發現了一些奇怪的索引。
如果我想創建一個2 * 2「矩陣」,我做Python列表索引
matrix = [[0]*2]*2
然後,如果我想使用,比如改變第一行第一列,
matrix[0][0] = 1
我會得到[[1,0],[1,0]]
,而不是[[1,0],[0,0]]
。有誰知道出了什麼問題?
使用清單上的*
運營商創建一個淺拷貝,所以[[0]*2]*2
等同於以下內容:
inner = [0, 0]
matrix = [inner, inner]
由於matrix
兩個位置都是相同的列表的引用,修改任何一個將修改另一個。相反,使用以下內容:
matrix = [[0]*2 for i in range(2)]
@DSM - 相當快...而這甚至不是你的答案。先生,幹得好! – mgilson
令人難以置信的快速我會說:) –