python中的切片创建了哪种类型的副本



我试图了解python中的切片的工作方式。我读过,切片对象使用 getItem len 方法。我会用代码问我的问题:

l = [[0],[1]]
l[0:1][0] = [99]
The result of these lines are 
>> l -> [[0],[1]]

但是,

l = [[0],[1]]
l[0:1][0].append(1)
The result of these lines are 
>> l -> [[0, 1], [1]]

我不知道发生了什么。这是浅副本吗?如果是这样,为什么列表不在关注操作员之后更改,但是使用附加方法...有人可以清楚地向我解释吗?

正如您指出的那样,切片会创建浅副本。在第一个示例中,您创建了l列表的副本,并替换了其第一个项目。原始列表保持未触及。

在第二个示例中,您创建了l列表的副本,并更改了其第一个项目。因为副本均浅l,并且l的副本具有与他们的第一个项目相同的[0]列表的引用。您附加了1,因此它反映了原始列表l及其副本。

最新更新