Оператор if где if 3 из 5 условий истинны в Python - PullRequest
0 голосов
/ 10 июля 2020

Мне было интересно, как иметь оператор if в python, который будет реагировать на любые 3 из 5 истинных условий, чтобы сделать оператор if истинным.

    if (a>2) and (b>3) and (c>2) and (d>6) and (e>4):
       list.append(True)

Этот код добавит true к массив «список», если все 5 условий выполнены, но мне было интересно, как заставить его работать, если какие-либо 3 из 5 верны, чтобы затем добавить истину в «список»?

Ответы [ 2 ]

4 голосов
/ 10 июля 2020

Как насчет этого?

values = [a>2, b>3, c>2, d>6, e>4]
if sum(values) >= 3:
    list.append(True)

Просто копирую то, что @Blckknght сказал в комментариях b / c Я не могу объяснить это лучше. Это работает, потому что:

True равно 1 и False равно 0 (класс bool является подклассом int)

sum суммирует числа, поэтому вы проверяете сумму логических значений> = 3!

0 голосов
/ 10 июля 2020

Подобно ответу @Tom, но с использованием кортежей, что приводит к (возможно) более быстрому построению, сборке мусора и (возможно) более приятному синтаксису.

if sum((a > 2, b > 3, c > 2, d > 6, e > 4)) >= 3:
        lst.append(True)
...