如何在包含列表的列表中确定值?

时间:2016-07-05 12:08:53

标签: python

我想创建一个简单的数组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 个答案:

答案 0 :(得分:1)

列表b是使用列表a创建的,b中的所有行都引用与a相同的列表对象:

您可以使用a

的副本来避免此行为
b = [a.copy()]

并避免b中的每一行指向同一个对象:

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