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

2024-04-26 06:21:26 发布

您现在位置: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]并不是我想要的。虽然我不确定是否有一个列表理解的方法来做到这一点。你知道吗


Tags: 实例函数目的元素类型列表定义错误
3条回答

这种方法对于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]

你能做到:

lst = [1, 2, 3]

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

>>> remove(lst, 2)
[1, 3]
>>> lst 
[1, 2, 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:]

相关问题 更多 >