使用一个列表方法在一个索引列表上

12 浏览
0 Comments

使用一个列表方法在一个索引列表上

我对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()方法的角度来看,索引列表实际上并不是与原始列表相同的列表吗?

0
0 Comments

使用列表的切片操作1st[2:]创建了一个从第2个索引开始到最后一个索引的列表副本。所以当使用remove函数时,它会从副本中删除元素,而不是原始列表。

解决方法是先使用切片操作将原始列表重新赋值为副本的值,然后再使用remove函数删除指定元素。

代码如下:

lst = lst[2:]
lst.remove(3)

这样将会得到你期望看到的答案。

0