简单的python问题:两个相等的列表的作用不同



我在python中使用乘法和更明确的第二项创建了一个列表。我检查它们是否相等,然后尝试更改每个元素中的相同元素。这种改变对每一个都有不同的作用。代码:

list1 = [[0]*2]*2
list2 = [[0, 0], [0, 0]]
print(list1 == list2)
list1[0][0] = 3
list2[0][0] = 3
print(list1)
print(list2)

打印输出:

True
[[3, 0], [3, 0]]
[[3, 0], [0, 0]]

发生了什么事?为什么多重启动列表的作用不同?

我相信发生这种情况是因为在相乘列表时,您只是对现有对象进行引用,所以对原始对象所做的任何操作都将对所有引用进行。

你想这样做:

list1 = [[0] * 2 for x in range(2)]

最新更新