any та all – вбудовані у python функції, котрі приймають в якості параметру ітерований об’єкт та перевіряють його елементи на істину.

Функція any

Функція any – повертає True, якщо хоча б один з елементів ітерованого об’єкту є істиною. Якщо в ітерованому об’єкті немає жодного істинного елементу – повертає False:

elements = [False, '', 0]
print(any(elements))
# False

elements = [False, '', 1]
print(any(elements))
# True

Перевірка, що хоча б одне ім’я зі списку починається на літеру “A”:

names = ['Brian', 'Axel', 'Santiago']
print(any([True for name in names if name.startswith('A')]))
# True

Перевірка, що число входить в діапазон від 1 до 20:

numbers = range(1, 20)
print(any([True for number in numbers if number == 19]))
# True

При обробці великих об’ємів даних, оптимальніше використовувати генераторні вирази. Вони створюють наступний елемент по запиту, а функція any завершується, щойно знаходить перший True. При використанні спискового включення, попередньо буде створено весь список елементів:

numbers = range(1, 20000)
print(any(True for number in numbers if number == 10))
# True

В цьому випадку, виконання функції any буде припинено на елементі зі значенням 10.

Функція all

Функція all – повертає True, якщо всі елементи ітерованого об’єкту є істинними. Якщо хоча б один елемент не є істинним, повертає False:

elements = ['string', True, 1]
print(all(elements))
# True

elements = ['string', True, 0]
print(all(elements))
# False

Так само, як і з функцією any, при обробці великих об’ємів даних, оптимальніше використовувати генераторний вираз. При знаходженні першого елементу False, функція all завершує роботу та повертає False:

numbers = range(1, 20000)
print(all(False for number in numbers if number == 10))
# False

В цьому випадку, виконання функції all буде припинено на елементі зі значенням 10.


Мітки: