1

我试图找出两个列表之间的区别。基本上,我想知道列表 1 中没有列表 2 的所有内容。解释它的最好方法是举个例子:

List1 = [a, a, b, c, d, e]
List2 = [a, b, c, d]

In this example, I would like a function that would return [a, e]

当我在python中使用差异函数时,它只会返回“e”,而不是列表1中还有一个额外的“a”。当我在2个列表之间简单地使用XOR时,它也只返回“e”。

4

2 回答 2

8

你想要的真的不是集减法。您可以使用计数器

>>> List1 = ['a', 'a', 'b', 'c', 'd', 'e']
>>> List2 = ['a', 'b', 'c', 'd']
>>> import collections
>>> counter = collections.Counter(List1)
>>> counter.subtract(List2)
>>> list(counter.elements())
['a', 'e']
于 2012-08-24T18:23:03.583 回答
1

假设List1是 的严格超集List2

for i in List2:
    if i in List1:
        List1.remove(i)
# List1 is now ["a", "e"]

List1如果您不想就地进行克隆,可以克隆。)

于 2012-08-24T18:22:30.770 回答