一个简单的问题,我实际上很难找到解决方案,因为大多数建议使用更容易使用的解决方案。
我有一个赋值明确告诉我使用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循环不是一种选择。
答案 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