gpt4 book ai didi

python - 在遍历列表时如果字符串不在项目中则计算一次 - python 3.x

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:16 26 4
gpt4 key购买 nike

我想在 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')

关于python - 在遍历列表时如果字符串不在项目中则计算一次 - python 3.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com