Как питонный способ определить, что две или более логических оценок являются ложными? - PullRequest
1 голос
/ 23 сентября 2019

В условных выражениях типа if (bool) and (bool):, какое самое чистое выражение будет возвращать True, если обе оценки равны False?

Я вижу много вариантов, чтобы логически заставить эту работу работать, но все они выглядятгрязный для меня.

1 Ответ

0 голосов
/ 23 сентября 2019

Вы можете использовать all:

if all(not b for b in [bool_1, bool_2, ..., bool_n]):
# means: if all are not True (False)

any:

if not any([bool_1, bool_2, ..., bool_n]):
# means: if not any of them is True (same as above, logically)

Или sum (только с типом bool, в противном случае использовать sum(map(bool, [bool_1, ..., bool_n]))):

if sum([bool_1, bool_2, ..., bool_n]) == 0:   #  or, if not sum(...):
# True is 1, False is 0, if sum is 0, then all are 0 (False)
...