我试图了解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
及其副本。