列表方法删除最后一个元素以及所有元素

38

我有一个清空list的问题。在当前程序中,我有一个方法可以清空特定数量的list。这样做相当不方便,因为在程序的某个部分使用此方法时,如果它只删除列表中的最后一个元素,那么将会更加有用。是否有任何方法可以将索引号作为参数传递给我的方法以解决此问题?

该方法的代码

def clearLists(self):
    del self.Ans[:]
    del self.masses[:]
每次我想使用这个方法时,我只需编写 self.ClearLists(),就可以删除列表中的每个元素。

2
我没有看到问题标题和正文之间的关系。 - fortran
抱歉,那是一道旧的未发布问题留下的痕迹,现在已经修复了。 - user1036197
3
如果你不想清空你的列表,为什么还要调用一个名为clearLists的方法呢? - Wooble
1
我是唯一一个不明白你在找什么的人吗? - Tadeck
3个回答

107

你可以使用lst.pop()或者del lst[-1]来删除一个列表中的最后一个元素。

pop()会删除并返回这个元素,如果你不需要返回值,可以使用del


由于pop()需要当前数组的大小,这仍然是最优解吗?因为我们现在每次都要找到数组的长度。 - T.Woody
1
是的,这是最优解,因为Python知道列表的大小。它的时间复杂度为O(1) - Jean-François Fabre

13

要从列表中删除最后一个元素,只需执行以下操作。

a = [1,2,3,4,5]
a = a[:-1]
#Output [1,2,3,4] 

1
这比 del a[-1] 好,因为在我的函数中它无法正常工作。 - Florent
2
它不起作用是因为它没有在原地工作,而是为a创建了一个新的引用。也许不是你想要的。 - Jean-François Fabre

11

要删除列表的最后一个元素,你可以使用:

def deleteLast(self):
    if self.Ans:
        del self.Ans[-1]
    if self.masses:
        del self.masses[-1]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接