首页 > 解决方案 > 遍历列表并检查我是否在列表末尾

问题描述

我有一个字符串列表:

animals = ["cat meow ", "dog bark"]

我想检查每个字符串是否包含"cow"上面列表中显然不存在的单词。我正在尝试编写一个 if else 语句来检查我是否在列表的末尾以及是否找不到奶牛 print "not found "

下面的代码为每个不包含字符串的元素打印 not found 但我想在它末尾迭代整个列表时只打印一次“not found”但我不知道正确的语法。

animals = ['dog bark' , 'cat meow ']
for pet in animals:
  if 'cow' in pet:
    print('found')
  else:
    print('not  found') 

标签: pythonlistfor-loop

解决方案


这似乎是 Python 的any()True函数的一个很好的用例,如果可迭代对象中的任何项为真,该函数就会返回。

animals = ['dog bark' , 'cat meow ']
has_cow = any('cow' in a for a in animals)
print('found' if has_cow else 'not found')

但是,如果您非常渴望使用for循环,您可以使用标志变量来跟踪您是否在循环中找到该项目,或者利用 Python 真正奇怪的 for-else构造(如果循环是,则执行 else 子句没有打破)。在十多年的 Python 编程中,我从未使用过for-else.,所以它实际上只是一种语言好奇心,我强烈反对它。但它确实适用于这个特定问题!

for a in animals:
    if 'cow' in a:
        print('found')
        break
else:                      # WTF!?!  Don't do this, folks.
    print('not found')

推荐阅读