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
请注意,如果条件本质上也是布尔值,则此方法也适用。
我是编程新手,想在 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
请注意,如果条件本质上也是布尔值,则此方法也适用。