我有一个for循环来测试一个条件。如果不满足条件,我想执行一些代码。以下代码所做的恰恰相反:
a = [1, 2, 3]
for k in a:
if k == 2:
break
else:
print("no match")如果没有到达break,则打印“not”(例如,对于k == 10这样的条件)。是否有一个相反的构造,即,如果到达break,运行一些代码?
我知道我可以
a = [1, 2, 3]
match = False
for k in a:
if k == 2:
match = True
if match:
print("match")但是正在寻找一个更紧凑的解决方案,没有标志变量..。
备注:我现在从答案中意识到,我没有明确表示,我希望将“匹配”代码移到for循环之外。它将相当大,我希望避免将它隐藏在for循环中(因此,标志变量的概念)
发布于 2014-11-22 17:03:19
如果你把你的条件放在一个函数或一个理解,你可以使用any关键字来完成这一非常节奏曲的方式。
if not any(k == 2 for k in a):
print 'no match'如果要将条件移动到返回布尔值的函数,则可以概括如下:
def f(x):
return x == 2
if not any(f(k) for k in a):
print 'no match'发布于 2014-11-22 16:45:19
好的。把它放在break之前。
a = [1, 2, 3]
for k in a:
if k == 2:
print("found") # HERE
break
else:
print("no match")发布于 2014-11-22 16:45:56
为什么不简单地:
a = [1, 2, 3]
for k in a:
if k == 2:
print("match")
breakhttps://stackoverflow.com/questions/27079824
复制相似问题