Python - 如何检查是否满足其中一个条件,然后具体是否满足每个条件?

时间:2011-12-27 01:59:02

标签: python

我想知道是否有任何快捷方式可以执行以下操作:

if a or b or c ...
    do p
    if a
        do x
    if b
        do y
    if c
        do z
    ...
else
    do q

是否有必要两次输入每个条件,还是有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

您的代码没有任何问题,但如果选中abc中的任何一个都很昂贵,您可以使用标志代替,只检查一次条件:

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)

我发现这个表格也更具可读性,因为它只有一个级别的缩进,但我想这只是一个偏好的问题......


编辑:如果必须在pxy之前执行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,但我知道你正在优化性能,列表理解更快......)