【发布时间】:2018-03-29 05:36:22
【问题描述】:
我有一个列表,ls = [0 1 2 3 4],我正在运行以下命令:
print(ls is ls[:])
我得到的输出是False。为什么它们不是同一个列表?当我打印两个版本时,我会打印相同的列表。
【问题讨论】:
-
ls[:]制作了ls的完整副本,因此它们不是同一个对象。不过,它们是平等的:ls == ls[:] -
切片创建副本
-
为什么列表副本必须具有相同的 id?然后他们仍然会引用同一个列表......
-
is检查它们是否是同一个对象,而实际上它们不是。它们是副本。当您执行ls[:]时,您正在制作原始ls的副本。 -
@cricket_007 没有。问题的表述方式不同——仅仅因为答案相同并不意味着它是一个重复的问题。 OP 或任何普通读者同样可能理解
is,但不是a[:]是复制运算符。