Python删除列表的重叠

Python删除列表的重叠,第1张

Python删除列表的重叠

本质上,您希望对多件套(即袋子)进行差异 *** 作。Python为

collections.Counter
对象实现了这一点:

提供了几种数学运算来组合Counter对象以产生多组(计数大于零的counter)。加减法通过将相应元素的计数相加或相减来组合计数器。交集和并集返回相应计数的最小值和最大值。每个 *** 作都可以接受带符号计数的输入,但是输出将排除计数为零或更少的结果。

因此,例如:

>>> list1 = ["25","+","7","*","6","/","7"]>>> list2 = ["7","*","6"]>>> list((Counter(list1) - Counter(list2)).elements())['25', '+', '7', '/']

在Python
3.6及更高版本中,这将是有序的(尽管目前尚不能保证,并且可能应将其视为实现细节)。如果订单很重要,并且您没有使用此版本,则可能必须实现有序计数器。

确实,文档本身提供了这样一个配方:

>>> from collections import Counter, OrderedDict>>> class OrderedCounter(Counter, OrderedDict):...     'Counter that remembers the order elements are first encountered'...     def __repr__(self):...         return '%s(%r)' % (self.__class__.__name__, OrderedDict(self))...     def __reduce__(self):...         return self.__class__, (OrderedDict(self),)...>>> list((OrderedCounter(list1) - OrderedCounter(list2)).elements())['25', '+', '/', '7']


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5667192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存