我有一個字符串的排列的列表,以及一個完整的從詞彙的單詞列表。我想爲每個排列找出它是否在單詞列表中。我嘗試了一段時間的循環,只是蠻橫的通過,這給了我一堆單詞列表中的單詞。但是,當我嘗試這樣做的二進制搜索:在字符串列表一串二進制搜索
def binärSökning(word, wordList):
first = 0
last = len(wordList) - 1
found = False
while first <= last and not found:
middle = (first + last)//2
if wordList[middle] == word:
found = True
else:
if word < wordList[middle]:
last = middle - 1
else:
first = middle + 1
return found
我得到了什麼回報,只是一個空列表(只是假的,如果它返回true,它增加了字到另一個列表)。任何人都可以告訴我爲什麼當它打出一個好詞時它不是真的?
編輯: 什麼調用函數只是一個for循環:
foundWords = set()
for word in listOfWords:
if binärSökning(word, NewWordList):
foundWords.add(word)
return foundWords
凡NewWordList是可能的話更窄的名單很可能的,沒有錯,因爲它工作時,我嘗試了蠻力。
我想結果是什麼時候有史以來搜索函數返回true,for循環補充說,字一組,然後呈現給用戶,一旦程序完成。
你可以添加一個你有什麼樣的例子,你想得到什麼?例如。一些虛擬數據,所以我們可以重現您的代碼 –
我已經更新了一點更多的解釋。 – Olof
這是第一個 - 也是最後一次 - 我已經看到了函數名中的diaereses。我很驚訝它甚至有效!爲了良好的秩序,也許堅持非重音字母:)。 –