b = a
和 b = a[:]
之间有一些区别。
当你执行 b = a
时,实际上是将列表 a
的引用赋值给变量 b
。这意味着 a
和 b
实际上指向内存中同一个列表对象。因此,对 a
或 b
执行任何修改操作都会影响到另一个变量。
可以看到,修改 b
中的第一个元素同样也改变了 a
中的元素。
而当你执行 b = a[:]
时,实际上是通过切片操作来创建了一个新的列表对象,其中包含了 a
中所有元素的副本。这样,b
就是一个独立的列表对象,对其进行修改不会影响原始列表 a
。
可以看到,这里修改 b
中的第一个元素,并不会改变原始列表 a
中的元素。
所以,关键区别在于赋值操作符 =
只是将引用复制给了新变量,而使用切片操作符 [:]
则创建了一个新的副本。