2016-07-05 79 views
0

我想製作一個簡單的數組b,並將b[0][0]設置爲1。但是,b[1][0],b[2][0]b[3][0]也改變了。如何解決這個問題?如何解決包含列表的列表中的值?

>>> a=[0]*5 
>>> b=[a]*4 
>>> b 
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 
>>> b[0][0] 
0 
>>> b[0][0]=1 
>>> b 
[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]] 

回答

1

名單b與列表a創建,並在b所有行引用相同的列表對象爲a

b = [a.copy()] 

可以使用的a副本避免此行爲

並且爲了避免b中的每一行指向同一個對象:

b = [a.copy() for _ in range(4)] 
+0

然後,我怎麼能創建一個默認值爲0的4 * 5數組?謝謝 – ss1234

+0

http://stackoverflow.com/a/240205/3125566 –

+0

如果以這種方式,我怎麼能改變我想要的位置的值。 – ss1234

相關問題