Python3:使用while循环在列表中查找单词

时间:2018-01-27 18:21:25

标签: python string python-3.x while-loop

一个简单的问题,我实际上很难找到解决方案,因为大多数建议使用更容易使用的解决方案。

我有一个赋值明确告诉我使用while循环返回true或false,基于列表中是否出现字符串。

我目前的解决方案(有效)如下:

def word_in_list(word, words):
x=0
length = int(len(words)) -1

while words[x] != word and x < length:
    x = x+1

    if words[x] == word:
        print (True)

    elif x == length and words[x] != word:
        print (False)

我最大的问题是将函数限制为列表的长度,否则我会收到一条错误,指出“列表索引超出范围”。

然而,由于这是一种相当笨重的方式来做一些如此简单的事情,我正在寻找关于如何简化它的建议 - 如果有这样的话。如上所述,您通常使用的for循环不是一种选择。

2 个答案:

答案 0 :(得分:2)

这里的东西运行得更有效率。每次迭代检查两个索引,而不是一个索引。

def word_in_list(word, words):
    l, r = 0, len(words) - 1
    while l <= r:
        if words[l] == word or words[r] == word:
            return True
        l += 1
        r -= 1
    return False

希望有所帮助!

答案 1 :(得分:1)

修正了一个小错误并清理了一点,但作为一个需要使用while的简单练习,该算法从根本上看起来很好。

def word_in_list(word, words):

    x = 0
    length = len(words) - 1

    while x < length:

        if words[x] == word:
            return True

        elif x == length:
            return False

        x += 1

word_in_list('hello', ['now', 'this', 'hello', 'world'])   # True
word_in_list('hello2', ['now', 'this', 'hello', 'world'])  # False