gpt4 book ai didi

python - 在 for-else 循环中是否存在与 "else"相反的行为?

转载 作者:太空狗 更新时间:2023-10-30 03:01:01 26 4
gpt4 key购买 nike

我有一个 for 循环来测试一个条件。如果从未满足条件,我想执行一些代码。下面的代码做相反的事情:

a = [1, 2, 3]
for k in a:
if k == 2:
break
else:
print("no match")

如果 break 未达到(例如 k == 10 之类的条件),则打印“不匹配”。是否有一种结构会做相反的事情,即如果到达 break 则运行一些代码?

我知道我可以做类似的事情

a = [1, 2, 3]
match = False
for k in a:
if k == 2:
match = True
if match:
print("match")

但一直在寻找一个更紧凑的解决方案,没有标志变量..

注意:我现在从回答中意识到我没有明确表示我想将“匹配”代码移到 for 循环之外。它会相当大,我想避免将它隐藏在 for 循环中(因此有了标志变量的想法)

最佳答案

如果您将条件放在函数或理解中,您可以使用 any 关键字以非常Python 的方式完成此操作。

if not any(k == 2 for k in a):
print 'no match'

如果您要将条件移动到返回 bool 值的函数,您可以概括为:

def f(x):
return x == 2

if not any(f(k) for k in a):
print 'no match'

关于python - 在 for-else 循环中是否存在与 "else"相反的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079824/

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