您可以
hamdist通过添加一个可选参数来优化功能,该参数包含到目前为止的最小距离,这样,如果
diffs达到该值,您将停止计算距离,因为此比较将为您提供比最小距离更大的距离:
def hamdist(str1, str2,prevMin=None): diffs = 0 if len(str1) != len(str2): return max(len(str1),len(str2)) for ch1, ch2 in zip(str1, str2): if ch1 != ch2: diffs += 1 if prevMin is not None and diffs>prevMin: return None return diffs
您将需要调整主循环以使用
None来自的返回值
hamdist:
dmin=len(trans[0])for i in xrange(len(trans)): for j in xrange(i+1,len(trans)): dist=hamdist(trans[i][:-1], trans[j][:-1]) if dist is not None and dist < dmin: dmin = dist



