any
Функция any() проверяет, истинно ли хотя бы одно значение в итерируемом объекте (списке, кортеже и т. д.). Если хотя бы один элемент истинный, возвращает True; если все элементы ложные, возвращает False.
Синтаксис
any(iterable)
Аргументы
- iterable:
- Что означает: Итерируемый объект, элементы которого проверяются на истинность.
- Возможные значения: Список, кортеж, строка, множество, словарь или любой другой итерируемый объект.
Возвращаемое значение
Возвращает True, если хотя бы один элемент итерируемого объекта истинный (не равен False, None, 0, пустым контейнерам и другим ложным значениям). Если все элементы ложные, возвращает False.
Примеры использования
print(any([0, 0, 3])) # Вывод: True
print(any([False, None, 0])) # Вывод: False
items = [0, False, True]
print(any(items)) # Вывод: True
print(any([])) # Вывод: False (пустой список считается "ложным", так как в нем нет истинных элементов)
Эквивалентный код
def pyplanet_any(iterable):
for item in iterable:
if item:
return True
return False
Частые ошибки
Передача строки:
print(any("0")) # Вывод: True (символ ``0`` в строке является истинным)
Как исправить: Если проверяются числовые значения, преобразуйте строку в число с помощью функций int или float.
Передача пустого контейнера:
print(any([])) # Вывод: False
Пустой контейнер всегда возвращает False, так как в нем нет истинных элементов.
В отличие от функции all, которая вернет True.
Часто задаваемые вопросы
Что произойдет, если передать пустой список? Пустой список возвращает False, так как в нем нет истинных значений.
Можно ли использовать any() с неитерируемыми объектами? Нет, будет вызвано исключение TypeError.
Можно ли проверить только один элемент? Да, для этого можно передать список с одним элементом. Например:
print(any([False])) # Вывод: False print(any([True])) # Вывод: True
Как any() работает со словарями? При передаче словаря будут проверяться только ключи. Например:
print(any({0: 'zero', 1: 'one'})) # Вывод: True print(any({0: 'zero', False: 'false'})) # Вывод: False