在Python中,如何判断一组M个条件中的N个条件是否为真



标题有点令人困惑,所以我将举一个例子。假设我有一组4个条件,[a,B,C,D],其中每个条件都可以是真或假。例如,条件A可以说

A[i,j+1] == 0 

A[i,j+1] != 0

我想要一个if声明,基本上说如下:

if (in [A,B,C,D], any 2 are true and any 2 are false):
do something
else:
do something else

如果需要,我可以对每个案例进行硬编码。例如:

if ((A and B are true) and (C and D are false)) or  ((A and C are true) and (B and D are false)) or...

我可以在每一个可能的情况下继续这样做。然而,这似乎效率极低,也不是蟒蛇式的。

最好的方法是什么?我应该硬编码吗?提前谢谢。

考虑到[A,B,C,D]binarybooleans,可以使用sum函数。

CCD_ 4 CCD_。

if sum([A,B,C,D])==2:
'do something'

尝试使用sum(),这是有效的,因为True = 1False = 0True+True+False+False=1+1+0+0=2,但一个问题是除了0/None之外的任何值都计算为True,所以如果A、B、C、D中的某个值为-1或其他值,它将失败-(

if sum([A,B,C,D]) == 2:
# 2 False, 2 True

更短但不太古怪的方式:

if A+B+C+D == 2:
# 2 False, 2 True

最新更新