any(iterable)
True или False.Функция 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