我想在 if 语句中使用它,所以如果输出是 bollean 表达式,它会很有用,但是是否有一种简单的方法来查找是否在列表中的项目中找不到字符串?
例如
string_foo='teen'
list_foo=['one','two','three']
问题是如果在列表中的项目中找不到字符串,我需要一个循环来输出一些东西,我这样做的问题是:
[print('no') if string_foo not in i for i in list_foo]
是不是对于 i 中没有 string_foo 的每个项目,它都会打印“否”,而我希望它只在 list_foo 中的项目中找不到 string_foo 时才打印“否”一次
不要使用列表理解的副作用
列表理解是为了构建新的列表,而不是为了它们的副作用。 print
返回 None
,因此您正在创建和丢弃 None
值的列表。这很浪费。
any
/all
+ 生成器理解
一个解决方案是使用 any
和生成器理解:
if not any(string_foo in i for i in list_foo):
print('no')
或者等同于 all
:
if all(string_foo not in i for i in list_foo):
print('no')
写一个函数
生成器/生成器表达式的开销您可能会觉得很昂贵。常规函数可能更有效:
def any_in_list(mystr, lst):
for i in lst:
if mystr in i:
return True
return False
if not any_in_list(string_foo, list_foo):
print('no')
for
/else
循环 + break
如果您不想编写通用函数,您可以通过 for
/else
构造和 break
进行复制:
for i in list_foo:
if string_foo in i:
break
else:
print('no')
我是一名优秀的程序员,十分优秀!