Python 寻找向量差异之间的索引

Python 寻找向量差异之间的索引,python,list,algorithm,Python,List,Algorithm,我有两张单子。让他们去吧 A=[1,2,3,4,5,6,7,8,9,10,20] B=[1,2,11,12,4,5,6,13,10,21] 其基本原理是,经过一些预处理后,A中的某些项目可以扩展或收缩到B中的其他项目上 在上面的示例中,两个列表的第一个和第二个元素一致,而A[2]=3扩展为B[2:4]=[11,12]。相比之下,A[6:9]=[7,8,9]被压缩为B[8]=13 最后,可以保留长度,并且仅更改项目。即A[10]=20变成B[10]=21 我需要确定列表不匹配的地方,并且我希望输

我有两张单子。让他们去吧

A=[1,2,3,4,5,6,7,8,9,10,20]
B=[1,2,11,12,4,5,6,13,10,21]
其基本原理是,经过一些预处理后,
A
中的某些项目可以扩展或收缩到B中的其他项目上

在上面的示例中,两个列表的第一个和第二个元素一致,而
A[2]=3
扩展为
B[2:4]=[11,12]
。相比之下,
A[6:9]=[7,8,9]
被压缩为
B[8]=13

最后,可以保留长度,并且仅更改项目。即
A[10]=20
变成
B[10]=21

我需要确定列表不匹配的地方,并且我希望输出如下所示(结构类型无关紧要,我只希望以某种方式知道索引)

x=[{'original':[2],'new':[2,4]},
{'original':[6,9],'new':[8]},
{'original':[10],'new':[10]}
]

编辑:该示例可能有误导性,但
B
通常会比
A
长,并且两个字符串可以是任意长度。

此问题通常被称为产生“差异”。这里有两个著名的diff算法,可能最著名的是Myer算法。我建议查看(),“diff”库(,,)和。列表的长度是多少?对于相对较小的值,有一些非常简单的approaches@AbhinavMathur每个列表1k-2k个项目