如何从Python中的列表中删除元素的所有实例?

ari*_*iel 20 python list

让我们说我有一个清单a:

a = [[1, 1], [2, 2], [1, 1], [3, 3], [1, 1]]
Run Code Online (Sandbox Code Playgroud)

是否有一个删除所有实例的函数[1, 1]

Ale*_*lli 40

如果要在适当位置修改列表,

a[:] = [x for x in a if x != [1, 1]]
Run Code Online (Sandbox Code Playgroud)

  • @Raj`a`不是你放置对象的盒子 - 它是你绑定到对象的名称标签.`a = ...`将name标签绑定到一个新对象,但是`a [:]`将'a`所绑定的列表中的所有项替换为新列表的内容. (5认同)
  • 为什么设置 `a[:]` 而不仅仅是 `a`? (4认同)

Ign*_*ams 20

使用列表理解:

[x for x in a if x != [1, 1]]
Run Code Online (Sandbox Code Playgroud)

  • 我知道写这里的`where`很诱人,Ignacio,与SQL类比......但它不起作用!你必须拼写它`if`,正如我在答案中所做的那样. (2认同)

eph*_*ent 7

Google会在列表中找到删除所有项目,其中包括

from functools import partial
from operator import ne
a = filter(partial(ne, [1, 1]), a)
Run Code Online (Sandbox Code Playgroud)

  • @ΤΖΩΤΖΙΟΥ 这适用于`list`,但`__ne__` 不作为`int` 或Python 2.x 中的其他一些类型的方法存在。这在 Python 3.x 中已修复,但为了一致性... (2认同)

ins*_*get 6

def remAll(L, item):
    answer = []
    for i in L:
        if i!=item:
            answer.append(i)
    return answer
Run Code Online (Sandbox Code Playgroud)


小智 5

这是 Alex Martelli 答案的更简单替代方法:

a = [x for x in a if x != [1,1]]
Run Code Online (Sandbox Code Playgroud)