我期待看看這段代碼是否可以優化。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