我是python的新手。我希望所有的python大師能夠提出一些方法來使下面的代碼更加pythonic,因此更高效。 它是一個簡單的代碼來找到兩個單詞之間的編輯距離。優化代碼
P.S.我想要改進代碼,而不是邏輯或算法優化。
class test:
def __init__(self,a,b,I=1,D=1,R=1):
self.a = a
self.b = b
self.mem = dict()
self.la = len(a)
self.lb = len(b)
self.I = I
self.D = D
self.R = R
def diff(self,i=0,j=0):
T = self.diff
memo = self.mem
if j == self.lb: return self.D * i
if i == self.la: return self.D * j
if (i,j) in memo:
return memo[(i,j)]
if self.a[i] == self.b[j]:
memo[(i,j)] = T(i+1,j+1)
return memo[ (i,j) ]
memo[(i,j)] = min(self.R + T(i+1,j+1) , self.D + T(i+1,j) , self.I + T(i,j+1) ,
self.D + T(i,j+1) , self.I + T(i+1,j))
return memo[(i,j)]
變量解釋:
A,B是兩個字符串,其edit distance是被發現。 I,D,R插入單個字母的刪除和替換成本。 mem是用於記憶遞歸調用的字典。 我和j分別是字符串a和b的指針
這是否正常工作?也許對於codereview.SE? – Trufa 2011-06-02 14:30:09
它完美的工作。自從我學習python以來,我只是想讓它變得更加「pythonic」。 – elricL 2011-06-02 14:32:05
是'def()'應該是一個實例方法?如果是這樣,它不是正確縮進。如果沒有,使用'self'作爲第一個參數是...奇怪。 – geoffspear 2011-06-02 14:32:56