python - 遍历列表并检查我是否在列表末尾
问题描述
我有一个字符串列表:
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')
解决方案
这似乎是 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')
推荐阅读
- apache-spark - Spark中sc.textFile和spark.read.text的区别
- python - 如何使用命令行停止python脚本
- c# - 如何在 ASP.NET 和桌面应用程序之间交换数据?
- html - 如何在 IE 中选择选项时删除白色背景
- mysql - 外键格式错误:MySQL
- algorithm - 以最低成本划分为 n 个箱
- java - 如何在 Android 表单中进行过滤后的类似选择选项的下拉菜单?
- linux - ext4 中的项目配额
- python - 如何正确 numpy.nanmean 和 3D 数组上的轴关键字?
- haskell - 并行数字积分器功能比顺序版本慢。为什么?