首页 > 解决方案 > python:返回没有给定元素的列表的函数

问题描述

我熟悉list.remove,它将通过删除传递元素的第一个实例来改变列表,如果元素不存在则引发值错误。

我正在寻找的是一个不会改变列表的函数,而是返回没有给定元素的列表副本。因此,例如,而不是执行

l = [1,2,3]
l.remove(2)

我会执行

l = [1,2,3].remove(2)

这样做的目的是让将这种类型的逻辑放入 dict 定义中变得更简单一些。所以,而不是:

l = [1,2,3]
l.remove(2)
d = {
  'theList': l
}

我只有

d = {
  'theList': [1,2,3].remove(2)
}

有这样的功能吗?

请注意,我只想删除有问题的值的第一个实例,而不是所有实例,所以[x for x in [1,2,3] if x != 2]不会做我想做的事。虽然我不确定是否有一种列表理解方式来做到这一点。

标签: python

解决方案


该类型不存在这种方法list

虽然,您可以自己编写它,首先复制列表,删除元素并返回新列表。

代码

def remove(lst, el):
    new_lst = lst.copy()
    new_lst.remove(el)
    return new_lst

例子

>>> l=[1,2,3]
>>> remove(l, 2)
[1, 3]
>>> l
[1, 2, 3]

推荐阅读