Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从列表中删除特定项-Python_Python_Python 2.7 - Fatal编程技术网

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

如何从列表中删除特定项-Python,python,python-2.7,Python,Python 2.7,我是Python中的乞丐,我想从列表中删除一个特定的项,删除标准是当一个项包含三个firsts元素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 =

我是Python中的乞丐,我想从列表中删除一个特定的项,删除标准是当一个项包含三个firsts元素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]]
这基本上是通过使用切片来获取元素[0]到[2],然后使用any来检查是否存在非零值。

如果要避免any方法调用,可以将a与一起使用


j变量的范围从0到4不等,但列表中只有3个项目。不,更改正在循环的列表,尤其是删除项目会导致与OP观察到的列表类似的错误。修改正在迭代的列表不是一个好主意。newList=[i for i in a if i[0]+i[1]+i[2]!=0]@Padraickenningham正常情况下,我也喜欢一句台词。我真的认为在这样的情况下这些都会发光;但他确实说过:我是Python的乞丐。对于这样一个简单的例子,列表的理解可能会让他更加困惑。他很快就会知道的。@Eithos,我想我们也不会使用filterlambda x:anyx[:3],所以;当他们有东西可以比较时,添加列表comp可能没有什么坏处
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]]