Сообщить об ошибке.

Функция any() в Python, хотя бы один элемент True

Проверяет, что хотя бы один элемент в последовательности True

Синтаксис:

any(iterable)

Параметры:

Возвращаемое значение:

Описание:

Функция any() возвращает True, если какой-либо (любой) элемент в итерируемом объекте является истинным True, в противном случае any() возвращает значение False.

Если последовательность пуста, то функция any() возвращает False.

Функция any() применяется для проверки истинности ЛЮБОГО из значений в итерируемом объекте и эквивалентна следующему коду:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

Дополнительно смотрите встроенную функцию all().

В основном функция any() применяется в сочетании с оператором ветвления программы if ... else. Работу функции any() можно сравнить с оператором or в Python, только any() работает с последовательностями:

>>> False or True or False
# True
>>> any([False, True, False])
# True

Но между or и any() в Python есть два основных различия:

  • Синтаксис.
  • Возвращаемое значение.

Функция any() всегда возвращает False или True.

>>> any([0, 2, 1, 0, 0])
# True
>>> any([0, 0, ''])
# False

Оператор or возвращает ПЕРВОЕ истинное значение, а если все значения False, то ПОСЛЕДНЕЕ ложное значение.

>>> 0 or 2 or 1 or 0 or 0
# 2
>>> 0 or 0 or ''
# ''


>>> bool(0 or 2 or 1 or 0 or 0)
# True
>>> bool(0 or 0 or '')
# False

Из всего сказанного можно сделать вывод, что для успешного использования функции any() необходимо в нее передавать последовательность, полученную в результате каких то вычислений/сравнений, элементы которого будут оцениваться как True или False. Это можно достичь применяя функцию map() или выражения-генераторы списков, используя в них встроенные функции языка, возвращающие bool значения, операции сравнения, оператор вхождения in и оператор идентичности is.

num = [1, 2.0, 3.1, 4, 5, 6, 7.9]
# использование встроенных функций 
# на примере 'isdigit()'
>>> [str(x).isdigit() for x in num]
# [True, False, False, True, True, True, False]

# использование операции сравнения
>>> [x > 4 for x in num]
# [False, False, False, False, True, True, True]

# использование оператора вхождения `in`
>>> ['.' in str(x) for x in num]
# [False, True, True, False, False, False, True]

# использование оператора идентичности `in`
>>> [type(x) is int for x in num]
# [True, False, False, True, True, True, False]

# использование функции map()
>>> list(map(lambda x: x > 1, num))
[False, True, True, True, True, True, True]

Примеры проводимых проверок функцией any().

Допустим у нас есть строка например с адресом и нам необходимо узнать, содержит ли адрес номер дома. Для этого разделим строку с адресом справа на лево методом str.rsplit() по разделителю ' ' один раз.

>>> addr1 = '142100, г. Москва, ул. Свердлова, 15'
>>> addr2 = '142100, г. Москва, ул. Свердлова'
>>> any(map(str.isdigit, addr1.rsplit(' ',1)))
# True
>>> any(map(str.isdigit, addr2.rsplit(' ',1)))
# False

Второй пример с числовой последовательностью. Необходимо узнать, есть ли в последовательности числа больше определенного значения.

>>> num1 = range(0, 20, 2)
>>> num2 = range(0, 15, 2)
>>> any([x > 15 for x in num1])
# True
>>> any([x > 15 for x in num2])
# False

Также можно проверять строку на наличие, каких то определенных символов.

>>> simbols = ['(', ')', '\'']
>>> line1 = "функция 'any()' всегда возвращает 'False' или 'True'"
>>> line2 = "функция any всегда возвращает значение bool"
>>> any([x in line1 for x in simbols])
# True
>>> any([x in line2 for x in simbols])
# False