2016-07-05 12 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

関連する問題