Python从另一个字符串列表中减去字符串列表

问题描述 投票:2回答:4

我想减去一个字符串列表,其中有多个相同的元素(因此设置操作没用)。

例:

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']
python string list list-comprehension
4个回答
2
投票

您可以使用集合中的Counter:

from collections import Counter
C_D = [i for v,c in (Counter(C)-Counter(D)).items() for i in v*c] 

2
投票

虽然Alain T.的方式还可以,但使用Counter有更好的方法:

from collections import Counter
C = ['A','B','B']
D = ['B']
result = list((Counter(C) - Counter(D)).elements())

1
投票

不使用任何库:

output = [x for x in C if not x in D or D.remove(x)]

//output: ['A', 'B']

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)
© www.soinside.com 2019 - 2024. All rights reserved.