栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python删除列表的重叠

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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']


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661077.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号