[英]How to remove and return element in python list
在python中,您可以执行list.pop(i)来删除并返回索引i中的元素,但是是否存在像list.remove(e)这样的内置函数在其中删除并返回了等于e的第一个元素?
谢谢
我的意思是,有list.remove
,是的。
>>> x = [1,2,3]
>>> x.remove(1)
>>> x
[2, 3]
我不知道为什么您需要它来返回已删除的元素。 您已经将它传递给list.remove
,所以您知道它是什么...我想您是否在列表中的对象上重载了__eq__
,以便它实际上与某种合理的相等性概念不符,您可能有问题。 但是不要那样做,因为那样会很糟糕。
如果您做了一件可怕的事情,那么滚动自己的函数就可以了:
def remove_and_return(lst, item):
return lst.pop(lst.index(item))
有内置的吗? 否。可能是因为,如果您已经知道要删除的元素,那为什么还要麻烦返回它呢? 1个
最好的办法是获取索引,然后将其弹出。 最终,这没什么大不了的-链接2个O(n)算法仍然是O(n),因此您的缩放比例仍然大致相同...
def extract(lst, item):
idx = lst.index(item)
return lst.pop(idx)
1当然,在某些病理情况下,返回的项目可能不是您已经知道的项目...但是它们并不重要,不足以保证一种仅需三行即可编写自己的新方法:-)
严格来说,您将需要以下内容:
def remove(lst, e):
i = lst.index(e)
# error if e not in lst
a = lst[i]
lst.pop(i)
return a
仅当e == a
为true,但e is a
为false,并且您确实需要a
而不是e
时才有意义。
不过,在大多数情况下,我会说这暗示您的代码中有可疑之处。
一个简短的版本是:
a = lst.pop(lst.index(e))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.