Новое Распределяем каналы MAX по категориям и территориям. Читать новость
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…

all() и any() — когда условий становится много



С and и or всё удобно, пока проверок две-три:

if age >= 18 and has_ticket and not banned:
print("Можно входить")


Но иногда проверок не просто много — их количество ещё и заранее неизвестно. Например, мы получили список пользователей и хотим понять: все ли совершеннолетние?
Можно было бы проверять каждого отдельно, но в Python для таких случаев есть all():

ages = [24, 31, 19, 27]

all(age >= 18 for age in ages)
# True


Здесь для каждого возраста получается отдельный результат: True или False, а all() отвечает уже на общий вопрос — все проверки прошли?

А если нужен другой вопрос — есть ли хотя бы один подходящий элемент? — используется any():

prices = [1200, 850, 2400, 600]

any(price < 1000 for price in prices)
# True


То есть здесь мы спрашиваем: есть ли среди товаров хотя бы один дешевле 1000.

И это важное отличие от and и or, о которых говорили в прошлом посте: and и or могут вернуть само значение, например строку или число, а all() и any() всегда возвращают True или False.
Особенно удобно это становится, когда список меняется. Сегодня в нём 3 элемента, завтра 30 — само условие переписывать не нужно.

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 86
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти