Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
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