# sample 1
a = [1,2,3]
a[:] = [4,5,6]
print(a)
>>> [4,5,6]
# sample 2
a = [1,2,3]
a[:].append(4)
print(a)
>>> [1,2,3]
为什么会发生这种情况? a和a [:]的地址不同,它们连接的原因是什么?这两种解决方案有什么区别?
答案 0 :(得分:3)
a[:]
没有相同的含义/在两个示例中以不同的方式工作
在第一个例子中:
a[:] = [4,5,6]
您使用slice assignment分配给a
。它会更改a
的内容。这是完全更改列表而不更改其引用的一种方法。
在第二个例子中:
a[:].append(4)
a[:]
创建列表的浅表副本,就像list(a)
或copy.copy(a)
一样,然后代码会将4
附加到此a
的副本,因此,a
并未发生变化。