我是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
我不知道我做错了什么......
谢谢!
答案 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]]