1. 程式人生 > >python 二維陣列(二維list)建立的坑

python 二維陣列(二維list)建立的坑

python 二維陣列(二維list)建立的坑

快速建立一維度list ,並修改

>>> l=[0]*3
>>> l
[0, 0, 0]
>>> l[0]=1
>>> l
[1, 0, 0]
>>> 

快速建立二維度list ,並修改(有坑)

錯誤的建立

>>> l=[[0]*2]*3
>>> l
[[0, 0], [0, 0], [0, 0]]
>>> l[0][0]=1
>>> l
[[1, 0], [1, 0], [1, 0]]
#簡單說下原因 matrix = [array] * 3操作中,只是建立3個指向array的引用,所以一旦array改變,matrix中3個list也會隨之改變。 

上述錯誤詳細原因

正確的建立

>>> l=[ [0]*2 for i in range(3) ] 
>>> l
[[0, 0], [0, 0], [0, 0]]
>>> l[0][0]=1
>>> l
[[1, 0], [0, 0], [0, 0]]
>>> 

另一 種建立(使用模組numpy建立)

import numpy as np
test = np.zeros((m, n), dtype=np.int)