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