如何删除 python 列表中的 return 元素
How to remove and return element in python list
在 python 中你可以做 list.pop(i) 删除和 returns 索引 i 中的元素,但是是否有像 list.remove( e) 删除第一个等于 e?
的元素 returns
谢谢
我的意思是,有 list.remove
,是的。
>>> x = [1,2,3]
>>> x.remove(1)
>>> x
[2, 3]
不过,我不知道您为什么需要它来 return 删除的元素。您已经将它传递给 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当然,在某些病态情况下,退回的物品可能不是您已经知道的物品……但它们还不够重要保证一种只需要 3 行就可以自己编写的新方法:-)
严格来说,您需要这样的东西:
def remove(lst, e):
i = lst.index(e)
# error if e not in lst
a = lst[i]
lst.pop(i)
return a
只有当 e == a
为真但 e is a
为假时才有意义,并且您确实需要 a
而不是 e
。
不过,在大多数情况下,我会说这表明您的代码中存在可疑之处。
一个简短的版本是:
a = lst.pop(lst.index(e))
在 python 中你可以做 list.pop(i) 删除和 returns 索引 i 中的元素,但是是否有像 list.remove( e) 删除第一个等于 e?
的元素 returns谢谢
我的意思是,有 list.remove
,是的。
>>> x = [1,2,3]
>>> x.remove(1)
>>> x
[2, 3]
不过,我不知道您为什么需要它来 return 删除的元素。您已经将它传递给 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当然,在某些病态情况下,退回的物品可能不是您已经知道的物品……但它们还不够重要保证一种只需要 3 行就可以自己编写的新方法:-)
严格来说,您需要这样的东西:
def remove(lst, e):
i = lst.index(e)
# error if e not in lst
a = lst[i]
lst.pop(i)
return a
只有当 e == a
为真但 e is a
为假时才有意义,并且您确实需要 a
而不是 e
。
不过,在大多数情况下,我会说这表明您的代码中存在可疑之处。
一个简短的版本是:
a = lst.pop(lst.index(e))