我对Python相当陌生,最近遇到了以下行为:
如果我有一个列表,并通过值删除其中的一个元素:
lst=[1,2,3,4,5,6]
lst.remove(3)
print(lst)
我得到了预期的结果。
[1,2,4,5,6]
如果我键入一个索引列表,我将获得预期结果:
type(lst[2:])
list
但是,如果我对一个带索引的列表应用列表方法,我得到的并不是我期望的原地修改的列表。
lst=[1,2,3,4,5,6]
#type(lst[2:])
lst[2:].remove(3)
print(lst)
[1,2,3,4,5,6]
这是因为索引列表实际上并不是与原始列表相同的列表(从 .remove() 方法的角度来看)吗?
lst[2:]
复制了数组,.remove(3)
从复制的数组中删除元素,因此原始数组永远不会被改变。 - Nick stands with Ukrainelist.remove
方法返回的是None
。 - Boseong Choiid
函数来检查列表的 id 是否发生了变化。 - Nick stands with Ukraine