Python:从列表中删除项目,但返回一个新列表

时间:2017-03-09 15:07:09

标签: python list

是否有从列表中删除项目的方式,以便返回没有删除元素的新列表?

例如, 如果我有一个列表[a,b,c,d,e],那么list.newRemove(a) = [b,c,d,e]

我想这样做,我可以创建一个函数:

func(element, list.newRemove(element))

这样我就可以

func(a, list.newRemove(a))

会传递a[b,c,d,e]

我知道我可以通过将元素和整个列表传递给函数,然后在没有传递元素的函数中创建新的子列表来实现。但是,我觉得按照我要求的方式做起来会更好。

这只是一种从根本上说不是pythonic的方式吗?我学会了用函数式语言编程,旧的习惯很难。

编辑:错误地写了集而不是列表

Edit2:这是我最终想要做的一个例子:

myList = [' a',''' c'' d']

for myList中的元素:     function(element,myList.newRemove(element)

where函数在元素和列表中其余元素之间进行计算。

3 个答案:

答案 0 :(得分:0)

这样的东西?

def newListRemove(element, list): return element, filter(lambda x: x != element, list)

list = [1,2,3,4]
print removeFromList(2, list)
print list

返回

(2, [1, 3, 4])
[1, 2, 3, 4]

答案 1 :(得分:0)

我认为这就是你的意思,但我不确定。

def newRemove(element, x):
    x.remove(element)
    return element, x

print(newRemove("a", ["a", "b","c", "d"]))

返回:

('a', ['b', 'c', 'd'])

希望这会有所帮助。

没有内置功能可以做你想要的,你必须做一个。

如果您正在尝试找到一个能够记住所谓的内容或者不知道它是否存在的功能,那么只需要一个小小的提示:对此类型list.您尝试编辑的列表,但字面上是list.并点击标签,然后应显示可以编辑列表的所有功能。他们中的大多数都是自我解释的,但通过反复试验很容易弄清楚他们做了什么。

希望这有助于您将来的所有编码工作

答案 2 :(得分:0)

def newListRemove(element, list):
  list.remove(element)
  return list

list = [1,2,3,4]
print(removeFromList(2, list))
print(list)

这应该是您所需要的。