python 多变量 if 条件

python multiple variable if condition

我是编程新手,想在 Python 中询问我是否有 m 条件列表,并且想知道在 if 语句中是否有 n 个条件为真:

例如:

if (a == b) or (c == d) or (e == f):

return 1,2 或所有 3 个是否为真,但我想知道是否只有其中 2 个为真

例如:

if ((a == b) and ((c == d) or (e == f))) or (((a == b) or (c == d)) and (e == f)) or (((a == b) or (e == f)) and (c == d)):

有没有更简单的方法来做到这一点? (m,n)很大怎么办?

谢谢

因为 True 实际上是整数 1,你可以这样做

if (a==b) + (c==d) + (e==f) == 2:

对于更大的条件集,您可以使用 sum():

conditions = [a==b, c==d, d==e, f==g, ...]
if sum(conditions) == 3:
    # do something
[a == b, c == d, e == f].count(True)
n = 0
for cond in list:
  n += bool(cond)

如果条件是保证 return True 或 False 的相等性测试,那么您当然可以使用@Tim 的答案。

否则,您可以使用适用于任何条件语句的条件列表来计算一个细微的变体

conditions = [a == b, 
    c == d,
    e == f,
    e,
    f is None]

然后使用以下方法进行简单求和:

sum(1 if cond else 0 for cond in conditions) >= m

请注意,如果条件本质上也是布尔值,则此方法也适用。