Python简单的将一个列表赋值给另一个列表就可以生成新的列表对象

Python简单的将一个列表赋值给另一个列表就可以生成新的列表对象 这句话对吗?

不对。
这样简单赋值,只是列表的浅拷贝。新的列表变量和旧的列表变量指的都是同一个内存地址,改变旧的列表,新的变量也会发生变化。
参考以下示例,在列表a更改元素后,列表b看上去也发生了变化,因为它们都是指向同一个列表对象的内存地址。

>>> a = [1,2,3]
>>> b = a
>>> b
[1, 2, 3]
>>> a[0]='a'
>>> a
['a', 2, 3]
>>> b
['a', 2, 3]

img

不对,这样子实际上是创建了一个列表和它的引用,它们指向的内存地址是一样的,列表变化,引用也变化。所以这不是新的对象
可以请采纳

不对。a = b 这样的赋值只是浅拷贝,还是指向同一地址的。
你可以用:a = list(b) 或 a = b[:] 这样a,b就不会同时改变了。

对比一下三种方式的区别:

>>> a = [1,2,3]
>>> b = a
>>> b
[1, 2, 3]
>>> a[0] = 5
>>> a
[5, 2, 3]
>>> b
[5, 2, 3]
>>> 
>>> a = [1,2,3]
>>> b = a[:]
>>> b
[1, 2, 3]
>>> a[0] = 5
>>> a
[5, 2, 3]
>>> b
[1, 2, 3]
>>> 
>>> a = [1,2,3]
>>> b = list(a)
>>> b
[1, 2, 3]
>>> a[0] = 5
>>> a
[5, 2, 3]
>>> b
[1, 2, 3]