Python 为什么a=[1,2,3]和a[:]不一样

Python 为什么a=[1,2,3]和a[:]不一样,python,python-3.x,list,Python,Python 3.x,List,我有下面的代码 a = [1,2,3] b = a a is b #shows True b = a[:] a is b #shows False a == b # shows True 我认为[1,2,3]和a[:]的值应该具有相同的id,并且它们是完全相同的对象。 当a[:]被分配给b时,会发生什么? 很抱歉,如果这个问题以前已经被问过,我找不到一个完美的答案,a[:]是一个列表的浅显副本(作为一个片段)。它具有相同的数值,但不是原始列表。==检查值,“is”是值,值的“identity

我有下面的代码

a = [1,2,3]
b = a
a is b #shows True

b = a[:]
a is b #shows False
a == b # shows True
我认为[1,2,3]和a[:]的值应该具有相同的id,并且它们是完全相同的对象。 当a[:]被分配给b时,会发生什么?
很抱歉,如果这个问题以前已经被问过,我找不到一个完美的答案,

a[:]是一个列表的浅显副本(作为一个片段)。它具有相同的数值,但不是原始列表。==检查值,“is”是值,值的“identity”是值。

看到了吗?以后,请在python-3.x标记的基础上添加一个普通的python标记。因为看起来您还没有完成巡演,我会提示您:在检查它是否重复之前,请不要回答这样的简单问题。如果它还没有被回答,那就去吧,但是如果它已经标记它要关闭,那么就去吧。@TankorSmash我知道,这就是为什么我留下了评论,没有投反对票/标记它。虽然我看到有人这么做了。好的,谢谢。“浅拷贝”这个词帮助我理解了差异背后的原因。