Объяснение к уроку
После этого урока ты сможешь:
any() для определения истинности хотя бы одного условия.all(), чтобы требовать истинности каждого условия.any([]) == False и all([]) == True, когда возможен пустой ввод.Когда решение зависит от множества значений, избегай написания ненужных счетчиков или длинных цепочек or и and.
any(values) истинно, если хотя бы одно входное значение истинно.all(values) истинно, если каждое входное значение истинно.Сначала ты можешь превратить данные в логические значения с помощью спискового включения. В этом уроке намеренно используются включения, которые ты уже знаешь; генераторные выражения появятся позже.
checks = [result == "ok" for result in results]Для пустого ввода any([]) возвращает False, но all([]) возвращает True. Это полезно математически, но в процессе релиза обычно требуется хотя бы одна проверка, прежде чем сообщать, что все проверки пройдены. Добавь явное требование непустого набора, когда этого требует бизнес-правило.
alerts = [False, True, False]
print(any(alerts))Вывод:
TrueОдного истинного элемента достаточно.
latencies = [42, 90, 110]
within_limit = [value <= 120 for value in latencies]
print(all(within_limit))Вывод:
TrueКаждое сравнение истинно.
print(any([]))
print(all([]))Вывод:
False
TrueЕсли пусто означает «проверки не выполнялись», тебе может потребоваться bool(checks) and all(checks).
responses = [" PASS ", "pass", " FAIL "]
normalized = [value.strip().lower() for value in responses]
print(any([value == "fail" for value in normalized]))Вывод:
TrueНормализуй перед сравнением, чтобы регистр букв и пробелы не влияли на решение.
| Требование | Проверка |
|---|---|
| Одно или более значений удовлетворяют предикату | any([...]) |
| Каждое значение удовлетворяет предикату | all([...]) |
| Ни одно значение не удовлетворяет предикату | not any([...]) |
| Требовать хотя бы одно значение и все корректны | bool(values) and all([...]) |
all([]) возвращает True — это не означает, что реальная валидация состоялась.any() означает «хотя бы один», а не «ровно один».not any(...) с not all(...) — они описывают разные ситуации.