我想创建一个简单的数组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]]
答案 0 :(得分:1)
列表b
是使用列表a
创建的,b
中的所有行都引用与a
相同的列表对象:
您可以使用a
:
b = [a.copy()]
并避免b
中的每一行指向同一个对象:
b = [a.copy() for _ in range(4)]