【发布时间】:2021-06-16 13:27:40
【问题描述】:
我正在尝试比较许多不同波形的傅立叶变换之间的差异。每个变换中最突出的峰值(单个频率)位于单个列表中。我想在所有列表中找到共同的峰值/元素并完全删除它们。例如:
输入:
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,然后过滤掉所有计数大于1的元素。比尝试做N^2个交集要容易得多;它与元素总数成线性关系。
标签: python list duplicates set intersection