python list 創建二維數組的坑

今天使用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)]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章