我在使用Python尝试制作的某个程序中复制列表时遇到问题。
所以基本上这就是我遇到问题的路线:
print(a)
print(b)
a[0]=deepcopy(b[0][-1][0][:1])
print(b)
(打印件仅用于调试目的,以便我可以看到这些列表是如何修改的) 这是印刷品显示的内容:
[[1, 2, 3, 5], [0, 5, 9, 10]]
[[[[1, 2, 3, 5], [0, 5, 9, 10]]]]
[[[[1], [0, 5, 9, 10]]]]
所以问题是“b”实际上已被修改,虽然我使用了它的“深度复制”,这对我来说完全没有意义。 这只发生在我的代码中,因为如果你试图运行相同的代码行(通过将“a”和“b”分配给之前的印刷品所显示的内容),它实际上不会修改“b” 。 所以我的问题是什么可能导致列表被“深度复制”时被修改?我没有整个程序,因为它有点长,而且它的所有名称和注释都是法语,所以我只是要求一个通用的答案,可以帮助我理解为什么会发生这种情况。 我希望我的解释足够清楚。请告诉我他们是不是,我会试着更好地解释=)。 谢谢。
答案 0 :(得分:0)
可能你有这个结构:
a = [[1, 2, 3, 5], [0, 5, 9, 10]]
b = [[a]]
如果您使用副本设置列表元素,则不会更改a
的列表,这是无关紧要的。
a[0] = [1] # b[0][-1][0][:1]
所以现在a
是
a = [[1], [0, 5, 9, 10]]
和b
是您打印的内容。