我想知道是否有任何快捷方式可以执行以下操作:
if a or b or c ...
do p
if a
do x
if b
do y
if c
do z
...
else
do q
是否有必要将每个条件输入两次,或者是否有其他方法可以做到这一点?
最佳答案
您的代码没有任何问题,但是如果检查 a
、b
或 c
中的任何一个代价高昂,您可以使用标志相反,只检查一次条件:
flag = False
if a:
flag = True
do x
if b:
flag = True
do y
if c:
flag = True
do z
do (p if flag else q)
我发现这种形式也更具可读性,因为它只有一层缩进,但我想这只是一个偏好问题......
编辑如果p
必须在x
、y
、z
之前执行>,那么您可以存储条件检查的结果:
doers = [x, y, z]
conditions = [check(el) for el in (a, b, c)]
do (p if any(conditions) else q)
tmp = [doers[i] for i, condition in enumerate(conditions) if condition]
(带有 tmp
的行在真正的 for
循环中会更像 pythonic,但我知道你正在优化性能,并且列表理解更快......)
关于Python - 如何检查是否满足多个条件之一,然后具体检查是否满足每个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640533/