我想减去一个包含多个相同元素的字符串列表(因此set操作没有用)。
示例:
C = ['A','B','B']
D = ['B']
我想这样做:
C - D = ['A','B']
到目前为止我得到的例子,但是没有给出我想要的结果
[item for item in C if item not in D]
returns: ['A']
这是一个更详细的示例,显示我想要的内容:
C = ['A','B', 'A','A','B','B','B','X','B']
D = ['A','B','B','Y']
这就是我想要的结果:
C - D = ['A', 'A', 'B', 'B','B','X']
答案 0 :(得分:2)
您可以使用集合中的计数器:
from collections import Counter
C_D = [i for v,c in (Counter(C)-Counter(D)).items() for i in v*c]
答案 1 :(得分:2)
尽管Alain T.的方法还可以,但使用implementation fileTree(dir: 'libs', include: ['*.jar'])
会有更好的方法:
Counter
答案 2 :(得分:1)
不使用任何库:
output = [x for x in C if not x in D or D.remove(x)]
//output: ['A', 'B']
答案 3 :(得分:0)
您可以尝试以下方法:
C = ['A','B', 'A','A','B','B','B','X','B']
D = ['A','B','B','Y']
res = [ i for i in C ]
for i in D:
if i in C:
res.remove(i)
print(res)