我有两个清单:
例如。a = [1,8,3,9,4,9,3,8,1,2,3]和b = [1,8,1,3,9,4,9,3,8,1,2 ,3]
两者都包含整数。整数后面没有任何意义(例如,“ 1”比“ 8”更接近“ 3”)。
我正在尝试设计一种算法来计算两个ORDERED列表之间的相似度。Ordered是此处的关键字(因此,我不能只获取两个列表的集合并计算它们的set_difference百分比)。有时数字确实重复(例如,上面的3、8和9,但我不能忽略重复)。
在上面的示例中,我将调用的函数将告诉我a和b例如约90%相似。我怎样才能做到这一点?编辑距离是我想到的。我知道如何将其与字符串一起使用,但是我不确定如何将其与int列表一起使用。谢谢!
您可以使用difflib模块
ratio() 以浮点数形式返回序列相似性的度量,范围为[0,1]。
这使 :
>>> s1=[1,8,3,9,4,9,3,8,1,2,3] >>> s2=[1,8,1,3,9,4,9,3,8,1,2,3] >>> sm=difflib.SequenceMatcher(None,s1,s2) >>> sm.ratio() 0.9565217391304348