迭代list-Python3.x时,如果字符串不在项中,则计算一次
我想在if语句中使用它,所以如果输出是一个bollean表达式,那么它会很有用,但是有没有一种简单的方法可以找到在列表中的项中是否没有找到字符串 e、 g 问题是我需要一个循环来输出somthing,如果在列表中的项中找不到字符串,那么这样做的问题是:迭代list-Python3.x时,如果字符串不在项中,则计算一次,python,string,python-3.x,list,if-statement,Python,String,Python 3.x,List,If Statement,我想在if语句中使用它,所以如果输出是一个bollean表达式,那么它会很有用,但是有没有一种简单的方法可以找到在列表中的项中是否没有找到字符串 e、 g 问题是我需要一个循环来输出somthing,如果在列表中的项中找不到字符串,那么这样做的问题是: [print('no') if string_foo not in i for i in list_foo] 对于每个字符串\u foo不在i中的项目,它将打印“否”,而如果在列表\u foo中的项目中未找到字符串\u foo,则我希望它只打印
[print('no') if string_foo not in i for i in list_foo]
对于每个字符串\u foo不在i中的项目,它将打印“否”,而如果在列表\u foo中的项目中未找到字符串\u foo,则我希望它只打印“否”一次,以下操作应该有效。list\u foo只是一个字符串列表,因此您不需要在每个项目上循环,您只需检查列表中是否存在string\u foo即可
if string_foo not in item:
print('no')
以下几点应该行得通。list\u foo只是一个字符串列表,因此您不需要在每个项目上循环,您只需检查列表中是否存在string\u foo即可
if string_foo not in item:
print('no')
不要使用列表理解的副作用
清单理解是为了建立新的清单,而不是为了它们的副作用。print返回None,因此您正在创建和放弃None值的列表。这是浪费
任意/全部+生成器理解
一种解决方案是使用任意一个发电机:
if not any(string_foo 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构造进行复制:
不要使用列表理解的副作用
清单理解是为了建立新的清单,而不是为了它们的副作用。print返回None,因此您正在创建和放弃None值的列表。这是浪费
任意/全部+生成器理解
一种解决方案是使用任意一个发电机:
if not any(string_foo 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构造进行复制:
这正是您想要的:
if any(x in i for i in things):
print("in it")
else:
print("not in it")
如果任何列表项为true,则返回true。这就是您想要的:
if any(x in i for i in things):
print("in it")
else:
print("not in it")
如果任何列表项为true,则返回true。但这与搜索子字符串不同。但这与搜索子字符串不同。