我正试图找出两个列表之间的区别。基本上,我想知道列表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中使用difference函数时,它只会返回"e",而不会返回列表1中额外的"a"。当我简单地在两个列表之间使用XOR时,它也只返回"e"
您真正想要的不是设置减法。您可以使用计数器:
>>> 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']
假设List1
是List2
:的严格超集
for i in List2:
if i in List1:
List1.remove(i)
# List1 is now ["a", "e"]
(如果不想就地克隆List1
,则可以克隆。)