有没有用python内置的列表减法/列表差异函数? 我知道如何编写这样的函数,因此无需解释。但由于这是常见的事情,我想知道是否已经内置了这样的功能。
我有两个排序列表,每个列表可能包含相同元素的多个副本。
我想知道列表之间的区别是什么,考虑到出现的次数(设置差异是不够的)
例如:
l1 = [1,1,2,3,5,6]
l2 = [1,2,8,9]
diff (l1, l2)
[1,3,5,6]
diff (l2,l1)
[8,9]
最佳答案
也许你可以使用 Counter类。
示例:
l1 = [1,1,2,3,5,6]
l2 = [1,2,8,9]
from collections import Counter
print Counter(l1) - Counter(l2)
print Counter(l2) - Counter(l1)
结果:
Counter({1: 1, 3: 1, 5: 1, 6: 1})
Counter({8: 1, 9: 1})
编辑:
要从 Counter
对象中获取列表,您可以使用以下代码:
from itertools import chain
r = Counter(l2) - Counter(l1)
list(chain(*[p*[k] for k,p in r.items()]))
我只是从类似字典的 Counter
中创建一个列表列表,然后使用 list(chain(* ... ))
将其展平为一个列表。
关于Python 列表差异与出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774751/