我试图比较两个列表的集合(或列表列表),并且正在努力寻找有效的解决方案。
给出的是两个具有不同长度的列表,并且每个位置可能具有不同的大小集。集合的大小介于 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} 在索引 1 的 list_2 给出计数 2,因为我们有两个匹配项。对于上面的示例,输出数组应如下所示
sequence_alligenment(list_1,list_2): [0,2,0,1]
列表的顺序很重要,因为这样,我试图找到重叠最大的时间点。
我一直在尝试使用集合和冻结集的交集,但由于它们周围有一些笨拙的for循环,所以没有太多的运气。
倚天杖
芜湖不芜
POPMUISE
相关分类