如何从列表列表中删除多个元素?

2024-04-23 20:53:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表元素列表。在我的例子中,我使用的是dlib跟踪器。将所有检测到的跟踪器追加到列表。我正在尝试从列表中删除一些跟踪器。为了简单起见,我有一个如下列表

[[1, 2, 3], [4,5,6], [7, 8,9], [2,54,23], [4,12,5], [3,2,6]]

每当我在列表中找到4时,我都要删除列表项

为此,我在下面的代码片段中找到了删除元素的索引

t=  [[1, 2, 3], [4,5,6], [7, 8,9], [2,54,23], [4,12,5], [3,2,6]]
del_item = []
idx = 0
for item in t:
    if 4 in item:
        del_item.append(idx)
    idx+=1
print(del_item)

到目前为止还不错。我有要删除的元素索引。我被困在如何删除列表中的多个索引

预期产出:

[[1, 2, 3], [7, 8,9], [2,54,23], [3,2,6]]

Tags: 代码in元素列表forifitem例子
2条回答

可以使用列表理解(如前所示)或使用filter完成此任务:

t = [[1, 2, 3], [4,5,6], [7, 8,9], [2,54,23], [4,12,5], [3,2,6]]
tclean = list(filter(lambda x:4 not in x, t))
print(tclean)  # [[1, 2, 3], [7, 8, 9], [2, 54, 23], [3, 2, 6]]

要使用filter,您需要函数——在本例中,我使用lambda来生成无名函数,尽管也可以使用普通函数filter返回iterable,所以我在它上面使用了list来获取列表

使用列表理解,只需一行即可:

trackers = [[1, 2, 3], [4,5,6], [7, 8,9], [2,54,23], [4,12,5], [3,2,6]]
filtered = [x for x in trackers if 4 not in x]
print(filtered)

输出:

[[1, 2, 3], [7, 8,9], [2,54,23], [3,2,6]]

相关问题 更多 >