我有一个Python列表,已将其复制到第二个列表中。现在,如果我要在第二个列表中进行更改,那会影响原始列表,但是在复制列表元素时不应该发生这种情况。 奇怪的是,如果我以其他方式在复制列表中进行更改,那么这些更改只会反映在复制列表中,而不会反映在原始列表中(请参见下面的代码)。
问题How to clone or copy a list?的可接受答案显示了3种直接方式:_POSIX_SOURCE
,slicing [:]
和list()
,但没有一个起作用(列表理解也给出了相同的结果如另一个答案中所建议)。我正在寻找答案,而没有使用任何库(.copy()
或copy.copy()
)来这样做,如上面链接中的其他答案所示。
编辑:我得到了juanpa.arrivillaga在评论中建议的此问题的解决方案。使用
copy.deepcopy()
copy = [item[:] for item in orig] #This worked as we are copying inner lists too now using item[:]
我希望通过复制列表,对副本进行任何更改都不会影响原始列表,但是我不会出现这种奇怪的行为。