如何从列表列表中删除多个元素?
How to remove multiple elements from a list of lists?
我有列表元素列表。就我而言,我使用的是 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]]
您可以使用列表理解仅用一行即可完成:
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]]
可以使用列表理解(如前所示)或使用 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
return 可迭代所以我在上面使用 list
来获取列表。
我有列表元素列表。就我而言,我使用的是 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]]
您可以使用列表理解仅用一行即可完成:
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]]
可以使用列表理解(如前所示)或使用 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
return 可迭代所以我在上面使用 list
来获取列表。