python多变量if条件

python多变量if条件,python,combinatorics,Python,Combinatorics,我是编程新手,我想用Python询问我是否有一个条件的m列表,并想知道其中的n个条件在if语句中是否为真: 例如: 将返回1,2或全部3个true,但我想知道其中是否只有2个是true 例如: 有没有更简单的方法?如果(m,n)很大怎么办 谢谢因为True实际上是整数1,您可以这样做 if (a==b) + (c==d) + (e==f) == 2: 对于较大的条件集,可以使用sum(): 如果条件是保证返回True或False的等式测试,那么当然可以使用@Tim的答案 否则,您可以使用条件列

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

例如:

将返回1,2或全部3个true,但我想知道其中是否只有2个是true

例如:

有没有更简单的方法?如果(m,n)很大怎么办


谢谢

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

if (a==b) + (c==d) + (e==f) == 2:
对于较大的条件集,可以使用
sum()


如果条件是保证返回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

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

除了不实用之外,您的解决方案不会给出正确的答案。如果这三个条件都为真,它也将返回
True
。。。
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)
conditions = [a == b, 
    c == d,
    e == f,
    e,
    f is None]
sum(1 if cond else 0 for cond in conditions) >= m