我试图理解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]]
我不知道怎么回事。这是浅薄的复制品吗?如果是这样的话,为什么在转接操作符之后列表没有改变,但是使用了附加方法.有人能给我解释清楚吗?
发布于 2019-07-03 08:36:23
正如您所指出的,切片创建了一个浅拷贝。在第一个示例中,您创建了l
列表的副本,并替换了它的第一项。最初的名单仍未被触及。
在第二个例子中,您创建了一个l
列表的副本,并修改了它的第一个条目。因为副本是浅的,所以l
和l
的副本都引用相同的[0]
列表作为第一项。您将1附加到它,因此它反映在原始列表l
及其副本中。
https://stackoverflow.com/questions/56874543
复制相似问题