我是编程的新手,想在Python中询问我是否有一个m-list的条件,并且想知道if语句中是否有一个是真的:
例如:
if (a == b) or (c == d) or (e == f):
将返回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)很大,该怎么办?
由于
答案 0 :(得分:6)
[a == b, c == d, e == f].count(True)
答案 1 :(得分:4)
由于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
答案 2 :(得分:2)
如果条件是保证返回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
请注意,如果条件本质上是布尔值,则此方法也适用。
答案 3 :(得分:0)
n = 0
for cond in list:
n += bool(cond)