我期待看看这段代码是否可以优化。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")
我期待看看这段代码是否可以优化。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")
在尝试优化代码之前,您可能应该修复代码中的几个问题。
首先,它没有记录,命名也没有帮助。我假设它试图提取开始和结束标记之间的字符串。
其次,它使即使开始和/或结束标记都没有发现明显的匹配:
>>> print gB("abc", "d", "e")
ab
它会好得多引发异常或在这种情况下返回None。
至于速度,我怀疑你可以更快地找到字符串比使用内建的字符串查找功能。它们都是用C语言编写的,毫无疑问,它们花了很多时间来优化它们。如果某人可以在Python中更快地实现字符串查找,那么编写find的人需要返回并再次查看他们的代码。
这是怎么回事?
import re
def gB(a, b, c):
return (re.findall('%s(.*?)%s' % (b, c), a) or [''])[0]
如果你谈论的是更小的代码,我想再次模块可以帮助你。
如果这是为b ='。'工作,你需要re.escape b和c。例如。 – 2010-01-18 02:33:27
我不认为你会想要使用'findall()',只放弃除第一个匹配之外的所有内容。 – 2010-01-22 07:05:20
“gb”是什么意思? – 2010-01-16 00:11:21
优化是什么意思?你没有错误检查。另外,请给出一个现实的例子。你想做什么? – 2010-01-16 00:12:28
我会开始优化这个通过让其他人可读。 – 2010-01-16 00:12:42