org = [1,1,1,1,2,2,4]
remove = [1,1,2]
result = foo(org, remove)
# result = [1,1,2,4]
# two 1 are removed and one 2
我想从org
中删除项目,但不是所有项目都具有相同的值-只删除remove
阵列中的每个项目一个
有numpy函数可以这样做吗?
根据CJR的评论,发现内置的Counter
理解减法和"做正确的事";。它默默地忽略第一个计数器中不存在的任何元素。
所以你可以这样做:
from collections import Counter
c1 = Counter(org)
c2 = Counter(remove)
result = list((c1 - c2).elements())
给出CCD_ 4。
编辑:当然,这不一定会保留订单。如果你知道这两个集合在一开始就已经排序了,那么就会有一个更有效的方法。