Python:帮我优化这段代码。

时间:2010-01-16 00:08:24

标签: python

我希望看看这段代码是否可以优化。

def gB(a,b,c):  
    x=len(b)  
    d=a.find(b)+x  
    e=a.find(c,d)  
    return a[d:e]  

print gB("abc","a","c")

2 个答案:

答案 0 :(得分:4)

在尝试优化代码之前,您可能应该修复一些代码问题。

首先,它没有文档,命名没有帮助。我假设它试图在开始和结束标记之间提取一个字符串。

其次,即使找不到开始和/或结束标记,它也会给出明显的匹配:

>>> print gB("abc", "d", "e")
ab

在这种情况下,引发异常或返回None会好得多。

至于速度,我怀疑你找到字符串比使用内置字符串查找功能更快。它们是用C语言编写的,毫无疑问需要花费大量时间来优化它们。如果有人可以在Python中更快地实现字符串查找,那么编写find的人需要返回并再次查看他们的代码。

答案 1 :(得分:1)

这个怎么样?

import re

def gB(a, b, c):
    return (re.findall('%s(.*?)%s' % (b, c), a) or [''])[0]

如果你在谈论较小的代码,我认为re模块可以帮助你。