← Все вопросы

Что делают all() и any() и чем они удобнее цикла с флагом?

Задан 7 месяцев назад559 просмотров3 ответа
15

Встретил if all(x > 0 for x in nums). Что возвращают all и any, когда что использовать, и что они выдают на пустом списке?

3 ответа

23
✓ Принятый ответ — помог автору

all(iterable)True, если все элементы истинны; any(iterable)True, если хотя бы один истинен.

nums = [3, 7, 1]
all(x > 0 for x in nums)   # True  — все положительные
any(x > 5 for x in nums)   # True  — есть 7

Они заменяют цикл с флагом и ещё и ленивые: all останавливается на первом ложном элементе, any — на первом истинном, не перебирая остаток. Важная ловушка с пустым списком: all([]) это True (нечего опровергнуть), а any([]) это False.

Алиса Сергеева Пустой случай реально кусает в задачах с проверками — спасибо, что напомнили · 7 месяцев назад
7

Мнемоника: all — «И» по всем, any — «ИЛИ» по всем.

-5

all возвращает True всегда.

Константин Плисов Нет, только если все элементы истинны. На [0, 1] вернёт False · 6 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект