Python 优化代码
我是python新手。我希望所有python大师都能提出一些方法,使下面的代码更具python风格,从而更高效。 这是一个简单的代码,可以找到两个单词之间的编辑距离 另外,我希望在代码方面有所改进,而不是在逻辑或算法优化方面Python 优化代码,python,Python,我是python新手。我希望所有python大师都能提出一些方法,使下面的代码更具python风格,从而更高效。 这是一个简单的代码,可以找到两个单词之间的编辑距离 另外,我希望在代码方面有所改进,而不是在逻辑或算法优化方面 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
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是要找到的两个字符串。
一、 D、R插入、删除和替换单个字母的成本。
mem是用于记忆递归调用的字典。
i和j分别是字符串a和b的指针我认为代码非常类似于python,但正如在注释中所述,选择通用的单字母变量单词是一个非常糟糕的主意,并且会使代码非常难以理解,这不是python 这适用于每种编程语言,但在某些情况下,python和其他语言更是如此 对于变量名,尽量做到慷慨大方和描述性
参见下面的“编写恐怖代码”的含义是什么?在这个站点创建者博客中, < P>你可能想考虑将你的类中的记忆层分解,沿着“./P> < P > > Pythonic将是: 编写大量的单元测试。 不要重新发明轮子:在线搜索以前的问题解决方案。见评论。 不要过早地优化:分析你的代码以确定这是否真的是正确的 瓶颈,如果是,则改进算法。 有意义的变量名 不要以大写字母开头局部变量名 在括号Ti+1,j+1内使用普通空格,而不是Ti+1,j+1 不要在元组周围使用假括号:memo[i,j]而不是memo[i,j] 不要过早地优化:自我扩散+1,j+1而不是Ti+1,j+1
一切正常吗?也许是codereview.SE?步骤1:给变量起一个有意义的名字。或者至少记录变量的含义。超过一个字母的变量名将有助于了解您要做的事情……不过,我建议您做的第一件事是,选择更好的变量名,使用a、b、c来表示所有内容,这会让其他人很难理解代码……您希望它更快,但你不想听算法的改进?那完全是错误的想法。