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

标签 python

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

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

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

最佳答案

您的代码没有任何问题,但是如果检查 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)

我发现这种形式也更具可读性,因为它只有一层缩进,但我想这只是一个偏好问题......


编辑如果p必须在xyz之前执行>,那么您可以存储条件检查的结果:

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/

相关文章:

python - scikit随机森林sample_weights的使用

Python 一个列表中的两个列表,带 Tab

python - 有没有办法让Jython py_compile不记录源文件的绝对路径?

Python3 类型错误 : takes 1 positional argument but 2 were given

python - GroupBy 两列,第一级有边距

python - 是否可以在 Django 项目中重新定义反向?

python - Python 递归列表

python - Python的map和Haskell的fmap有什么区别?

python - struct.unpack 和 win/lin 中 python 2.4 和 2.4.4 的问题

python - 在 Python 中检查图像格式是否无损?