提问人:Matta 提问时间:3/18/2020 更新时间:3/18/2020 访问量:23
简单的 python 问题:两个相等的列表以不同的方式行事 [重复]
Simple python question: two equal lists acting differently [duplicate]
问:
我在 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]]
这是怎么回事?为什么倍增启动的列表的作用不同?
答:
1赞
damaredayo
3/18/2020
#1
我相信发生这种情况是因为在乘以列表时,您只是在对现有对象进行引用,因此您对原始对象所做的任何事情都将对所有引用执行。
您希望改为执行此操作:
list1 = [[0] * 2 for x in range(2)]
下一个:在键乱序时比较字典列表
评论