从内部二维列表中删除 n 个值的最快方法
Fastes way to remove n values from inner 2D list
我有一个二维列表,其中包含数字 1 到 n,每个列表出现两次。
我想找到最快的方法来完全摆脱它们。
示例:
input = [[], [6,7,7,6], [1,2,3,2,3,1], [], [4,4,5,5]]
#remove 4 and 1
output = [[], [6,7,7,6], [2,3,2,3], [], [5,5]]
(列表可以为空)
我想出了那个代码,但我确实觉得自从它创建一个新列表以来它有点慢。有更聪明的方法吗?
input = [[], [6,7,7,6], [1,2,3,2,3,1], [], [4,4,5,5]]
output = list()
to_remove = [1,4]
for inner in input:
new_inner = [x for x in inner if x not in to_remove]
output.append(new_inner)
您可以使用两个列表推导来完成此操作,再加上使用一个集合,该集合可以更快地查找要删除的大量元素:
input = [[], [6,7,7,6], [1,2,3,2,3,1], [], [4,4,5,5]]
to_remove = set([1,4])
output = [[x for x in inner if x not in to_remove] for inner in input]
我有一个二维列表,其中包含数字 1 到 n,每个列表出现两次。 我想找到最快的方法来完全摆脱它们。 示例:
input = [[], [6,7,7,6], [1,2,3,2,3,1], [], [4,4,5,5]]
#remove 4 and 1
output = [[], [6,7,7,6], [2,3,2,3], [], [5,5]]
(列表可以为空)
我想出了那个代码,但我确实觉得自从它创建一个新列表以来它有点慢。有更聪明的方法吗?
input = [[], [6,7,7,6], [1,2,3,2,3,1], [], [4,4,5,5]]
output = list()
to_remove = [1,4]
for inner in input:
new_inner = [x for x in inner if x not in to_remove]
output.append(new_inner)
您可以使用两个列表推导来完成此操作,再加上使用一个集合,该集合可以更快地查找要删除的大量元素:
input = [[], [6,7,7,6], [1,2,3,2,3,1], [], [4,4,5,5]]
to_remove = set([1,4])
output = [[x for x in inner if x not in to_remove] for inner in input]