如何从列表中删除特定项目 - 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]]
我是 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]]