|
在寫python 初始化 二維 0數 陣列 array ,遇到一個鳥問題,一開始用了法2,陣列內容不管怎麼用,其他的行都會跟著改
搞了好幾天才找到問題,用了法1 才正常
Python 中沒有數組類型,但為了模擬它,我們可以使用列表。一個用零填滿的二維數組結構。這兩個表達式之間有什麼區別:
1.
- zeros = [ [0]*M for _ in range(N) ]
複製代碼
2.
這種形式zeros = [[0]*M]*N不會得到你想要的結果,因為每一行都是一個實例,所以修改任何列都會改變所有行中的該列!如果 M 和 N 為 3,zeros[0][1]=2將導致[[0,2,0],[0,2,0],[0,2,0]]
正確方式應該為,避免了嵌套列表理解:
- zeros = [ [0]*M for _ in range(N) ]
複製代碼
https://stackoverflow.com/questions/13157961/2d-array-of-zeros |
|