【发布时间】:2019-10-23 19:02:33
【问题描述】:
下面的代码没有按预期工作,看起来像优化在完整列表中搜索而不是单独搜索每个元素并始终返回 true。
预期的代码是仅在每次迭代中搜索列表的每个元素中的子字符串并返回 true 或 false。但它实际上是在查看完整列表。
在下面的代码中,如果我使用 find() 或 in 运算符,打印语句将在 <<>> 内打印完整列表,但如果我使用 == 运算符,则只打印一个单词。
问题代码:
def myfunc(mylist):
for i in range(len(mylist)):
count = 0
for word in mylist:
print('<<{}>>'.format(word))
if str(word).casefold().find('abc') or 'def' in str(word).casefold():
count += 1
abcdefwordlist.append(str(word))
break
此代码在 mylist 中搜索 'abc' 或 'def' 的单词。
如果我使用str(word).casefold() == 'abc' or str(word).casefold() == 'def',那么它只与单词进行比较。
如何在这样的循环中检查单词是否包含“abc”或“def”。
【问题讨论】:
-
在服装列表上运行代码会打印
<< >>中的第一个单词,然后在abcdefwordlist上引发`NameError... -
mylist看起来像什么?word已经是字符串了吗? -
另外,看起来你对
i没有任何作用,那么外部循环应该做什么?