python - 如何从 Python 中的列表列表中删除所有重复元素,同时删除原始元素
问题描述
我试图比较许多不同波形的傅立叶变换之间的差异。每个变换中最突出的峰值(单个频率)位于单个列表中。我想在所有列表中找到共同的峰值/元素并完全删除它们。例如:
输入:
List1=[1,2,3,4,5,6,11]
List2=[2,3,7,8,9]
List3=[9,1,8,5,10,12]
ListofListIn=[List1,List2,List3]
输出:
List1=[4,6,11]
List2=[7]
List3=[10,12]
ListofListOut=[List1,List2,List3]
我需要它来处理任意数量的任意大小的列表。我可能有 50 多个不同大小的列表。只要单独列表的元素不混合,我不关心单独列表中的顺序。
我已经研究过,set.intersection
但我的理解是它只会将一组与另一组进行比较,如果我有未知数量的列表,更不用说做我想要的每组都需要与其他每组相交 50* 50=2500 这是许多交叉点。也set.intersection
只删除重复项而不是原始项。
我希望我正在尝试做的事情对你们那里的 python 向导有意义。我已经在这里撞了几个小时的砖墙了,任何提供的帮助都将不胜感激。
解决方案
使用collections.Counter
:
>>> List1=[1,2,3,4,5,6,11]
>>> List2=[2,3,7,8,9]
>>> List3=[9,1,8,5,10,12]
>>> from collections import Counter
>>> c = Counter(i for a in (List1, List2, List3) for i in a)
>>> [i for i in List1 if c[i] == 1]
[4, 6, 11]
>>> [i for i in List2 if c[i] == 1]
[7]
>>> [i for i in List3 if c[i] == 1]
[10, 12]
推荐阅读
- jquery - 为什么不使用 jQuery 设置数据属性(简易饼图)
- python - 在 python 中使用 boto3 服务员时出错
- python - Python NLP:根据我自己的语料库获取单词的同义词
- microstrategy - 如何将过滤器设置为仅适用于特定图形而不适用于整个数据集?
- tensorflow - 如何在 tensorflow 1.14 中将两个填充张量连接到一个填充张量?
- python - 使用日期查找器将字符串转换为日期
- reactjs - React-Router-Dom 6+ 抛出尝试导入错误:“withRouter”未从“react-router-dom”导出
- sqlite - SQLITE 查询 AVG 子选择/加入
- html - 隐藏 CSS 动画的内容溢出
- javascript - 无法执行 .map whithin 功能