今天使用list 創建二維數組,使用方法是:
a=[[0]*3]*5
顯示
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
看起來完美,結果修改其中一個元素 a[1][2]=1,顯示如下:
[[0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1]]
明明我只修改了一個元素,爲什麼其他行的元素都變了。
官方的解釋是
也就是說,A=[array]*5得到的只是5個array的引用,改變array,A中的元素都會改變。
使用list創建二維數組可以列表生成式法:
A=[[0 for i in range(n)]for j in range(m)]