python:函数返回没有给定元素的列表

时间:2018-08-10 17:58:41

标签: python

我熟悉WYSIWYG,它将通过删除传递的元素的第一个实例来使列表发生变异,如果该元素不存在,则会引发值错误。

我要寻找的是一个不会更改列表的函数,而是返回不包含给定元素的列表的副本。因此,例如,与其执行

list.remove

我会执行

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

这样做的目的是使将这种类型的逻辑放入dict定义中变得更加简单。因此,而不是:

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

我只有

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

这样的功能存在吗?

请注意,我只想删除有问题的值的第一个实例,而不是所有实例,因此d = { 'theList': [1,2,3].remove(2) } 并不能满足我的要求。尽管我不确定是否可以使用列表理解方法。

3 个答案:

答案 0 :(得分:4)

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]

答案 1 :(得分:3)

您可以使用index

a = [1,2,3]
{'a': a[:a.index(2)] + a[a.index(2)+1:]}

或作为功能:

def remove(a, e):
    idx = a.index(e)
    return a[:idx] + a[idx+1:]

答案 2 :(得分:-2)

你能做

lst = [1, 2, 3]

def remove(l, i):
    r = l[:]
    r.remove(i)
    return r

>>> remove(lst, 2)
[1, 3]
>>> lst 
[1, 2, 3]