我不明白为什么以下代码的结果是[1,[2,5]]
而不是[3,[2,5]]
。为什么子列表中的元素已更改,但子列表外部的元素未更改?
我是Python的新手,所以也许我看不到应该很明显的东西。我已经读过有关深层和浅层副本的信息,但这并没有帮助。
a = [1,[2,3]]
b = a[:]
a[0] = 3
a[1][1] = 5
print(b)
我在第2行上创建了列表切片,但是由于它没有开始或结束值,因此切片等于整个列表,对吗?那么为什么3变为5,而1保持不变?
答案 0 :(得分:0)
因为在Python中,每个列表都是一个独立的对象。 您可以使用“复制”模块进行深度复制以解决此特定问题。
import copy
a = [1,[2,3]]
b = copy.deepcopy(a)
a[0] = 3
a[1][1] = 5
print(b)
结果:[1,[2、3]]