简单的 python 问题:两个相等的列表以不同的方式行事 [重复]

Simple python question: two equal lists acting differently [duplicate]

提问人:Matta 提问时间:3/18/2020 更新时间:3/18/2020 访问量:23

问:

我在 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]]

这是怎么回事?为什么倍增启动的列表的作用不同?

Python 列表 相等 乘法

评论


答:

1赞 damaredayo 3/18/2020 #1

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

您希望改为执行此操作:

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