如何从列表中删除特定项目 - Python

How to remove an specific item from a list - Python

我是 Python 的新手,我想从列表中删除一个特定项目,删除标准是当一个项目包含三个第一元素 null 时,它必须从主列表中删除。这就是我想要做的:

a = [[0, 0, 0, 1],[0, 0, 1, 1],[1, 1, 1, 1]]
temp = []

for i in range(len(a)):
    for j in range(len(a[i])):
        if a[j][0] + a[j][1] + a[j][2] == 0:
            temp = a.pop(j)
            print temp
        else:
            print a

        j += 1    
        i += 1 

我收到以下错误:

    if a[j][0] + a[j][1] + a[j][2] == 0:
IndexError: list index out of range

我不知道我做错了什么...

谢谢!

你只需要这个(在这种情况下不需要范围):

a = [[0, 0, 0, 1],[0, 0, 1, 1],[1, 1, 1, 1]]
newList = []

for i in a:
    if i[0] + i[1] + i[2] != 0:
        newList.append(i)

print newList

您可以使用列表理解来过滤掉子列表

>>> a = [[0, 0, 0, 1],[0, 0, 1, 1],[1, 1, 1, 1]]
>>> a = [i for i in a if any(i[:3])]
>>> a
[[0, 0, 1, 1], [1, 1, 1, 1]]

这基本上是通过使用切片从 [2] 获取元素 [0],然后使用 any 检查是否有非零值。

如果您想避免 any() 方法调用,您可以使用 conditional check with the in operator.

a = [[0, 0, 0, 1],[0, 0, 1, 1],[1, 1, 1, 1]]
b = [i for i in a if 1 in i[:3]]
# [[0, 0, 1, 1], [1, 1, 1, 1]]