在Python中,如果这些变量中的x为真,是否有一种有效的写入方法?

在Python中,如果这些变量中的x为真,是否有一种有效的写入方法?,python,module,conditional,Python,Module,Conditional,我正在写一个程序,我需要检查这4个布尔值中的2个是否为真。显然,我可以在if语句中写出每个组合,这对4来说足够简单(尽管很痛苦)。然而,如果问题有100个变量,并且需要知道是否至少有2个是真的,那么现在我们有一个更大的问题。有没有更简单的解决办法?有没有一个模块可以帮我做到这一点?如果我希望至少x为真,该怎么办?您可以获取布尔列表的总和。例如 a = True b = True c = False d = False e = True f = False g = False bools = [

我正在写一个程序,我需要检查这4个布尔值中的2个是否为真。显然,我可以在if语句中写出每个组合,这对4来说足够简单(尽管很痛苦)。然而,如果问题有100个变量,并且需要知道是否至少有2个是真的,那么现在我们有一个更大的问题。有没有更简单的解决办法?有没有一个模块可以帮我做到这一点?如果我希望至少x为真,该怎么办?

您可以获取布尔列表的总和。例如

a = True
b = True
c = False
d = False
e = True
f = False
g = False

bools = [a, b, c, d, e, f, g]

print(sum(bools))
输出
3


然后将其与您想要的任何数字进行比较,例如,
sum(bools)>=2

假设布尔数组是
data
,则下面计算真值的数量

sum(data)

您可以将返回值与
x

进行比较,将它们相加,然后检查总和是否为2。如果是100个布尔值(我希望你将它们存储在dict列表中),将它们相加,检查总和是否至少为2。你能举个例子吗?显然你不需要100个变量。一个简单的答案是使用numpy。检查这个:将bools加载到一个numpy数组“mybools”中,然后测试np。其中(mybools==True),返回的数组中bools的索引位置为True。通过检查长度,很容易检查多少是真的。
sum(data)
是您所需要的全部。