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

时间:2015-01-23 17:49:36

标签: python python-2.7

我是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

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

谢谢!

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

您可以使用列表推导来过滤掉子列表

>>> 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]]

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

答案 2 :(得分:0)

如果您想避免any()方法调用,可以conditional check使用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]]