2016-03-16 81 views
0

所以我幾個月來一直在學習Python。我遇到了一個練習,希望您能夠計算一個字符串中出現子字符串的次數。我搜查了一下,但找不到我正在尋找的確切答案。這是我寫的代碼,這是功能性的。但是,由於例外情況,這確實需要一秒鐘。我選擇使用string.index,因爲string.find中的-1值在某些詞中會混淆起點。什麼是更有效的方式,而不需要導入其他模塊等。在更基本的Python中,比如我寫的代碼。在Python中計數子字符串 - 更有效的方法?

word = "banana" 
sub = "ba" 
start = 0 
ix = 0 
count = 0 
end = None 

if end is None: 
    end = len(word) 
while start < end: 
    if sub in word: 
     try: 
      ix = word.index(sub, start, end) 
     except: 
      break 
     ix += 1 
     start = ix + 1 
     count += 1 
print(count) 

謝謝!

回答

4

你可能只是這樣做:

'banana'.count('ba')

字符串的計數方法的文檔說:

返回非重疊出現串子的數目 串S [開始:結束。可選參數開始和結束爲 解釋爲切片符號。

輸出示例:

>>> 'banana'.count('ba') 
1 
>>> 'banana'.count('na') 
2 
+0

/捂臉我的文檔中讀出這一點,但也許我得到它似乎多麼簡單混淆。爲什麼我爲已經存在的函數創建函數而遭受折磨? /嘆息 –

+0

@ChrisAvina然而,請注意,這將導致''banana'.count('ana')== 1'(非重疊),而你已經實現將產生'2' – schwobaseggl

+0

@schwobaseggl謝謝指出。我會記下來。 –

相關問題