我有一个字符串的排列的列表,以及一个完整的从词汇的单词列表。我想为每个排列找出它是否在单词列表中。我尝试了一段时间的循环,只是蛮横的通过,这给了我一堆单词列表中的单词。但是,当我尝试这样做的二进制搜索:在字符串列表一串二进制搜索
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。我很惊讶它甚至有效!为了良好的秩序,也许坚持非重音字母:)。 –