【发布时间】:2020-03-20 17:06:57
【问题描述】:
我正在尝试比较两个集合列表(或列表列表),并且正在努力寻找有效的解决方案。
给出了两个长度不同的列表,并且每个位置的大小设置可能不同。集合的大小在 1-6 个整数之间,列表的大小约为 4000 个较大的元素和 100 个较小的元素。
list_1= [{42, 189, 31}, {32, 75, 189}, {42, 31}, {100, 63}, {75, 37}]
list_2=[{75, 37}, {42, 37}]
然后我想在数组中找到两个列表之间重叠最大的点,并计算每个集合之间的交集中有多少元素。
在这种情况下,最佳对齐将在 list_1[1:3] 处,其中有两个重叠元素
{32, 75, 189} 在 list_1 的索引 1 和 {75, 37} 在list_2 的索引 0 与 {42, 31} 在 list_1 的索引 2 和 {42, 37}在 list_2 的索引 1 处给出计数 2,因为我们有两个匹配项。对于上面的例子,输出数组应该是这样的
sequence_alligenment(list_1,list_2): [0,2,0,1]
列表的顺序很重要,因为我试图找到重叠最大的时间点。
由于围绕它们的一些笨拙的 for 循环,我一直在尝试使用 set 和 freezesets 的交集,但运气不佳。
【问题讨论】: