All: примеры (PYTHON)

Работа с функцией all в Python: примеры и особенности
Раздел: Встроенные функции, Итерации/логика
all(iterable): bool

Функция all в Python

Функция all() в Python является встроенной функцией, которая принимает итерируемый объект в качестве аргумента и возвращает True, если все элементы этого объекта являются истинными (truthy), или если объект пуст. Если хотя бы один элемент является ложным (falsy), функция возвращает False.

Использование функции распространено для проверки выполнения условия для всех элементов коллекции, например, в условиях фильтрации данных или валидации.

Аргументы

Функция принимает один обязательный аргумент:

  • iterable - итерируемый объект (список, кортеж, множество, словарь, генератор и т.д.), элементы которого проверяются на истинность.

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

Функция возвращает булево значение:

  • True - если все элементы итерируемого объекта являются истинными или объект пуст.
  • False - если хотя бы один элемент является ложным.

Примеры использования функции all

Работа с коллекциями

Проверка списка чисел:

numbers = [2, 4, 6, 8]
print(all(numbers))
True

Список с одним ложным элементом:

values = [1, 3, 0, 5]
print(all(values))
False

Работа с пустым объектом

empty_list = []
print(all(empty_list))
True

Использование с условиями

Проверка, что все числа положительные:

nums = [5, 12, 9, 3]
result = all(x > 0 for x in nums)
print(result)
True

Похожие функции в Python

Функция any

Функция any() возвращает True, если хотя бы один элемент итерируемого объекта является истинным. Она является противоположностью all() по своей логике.

Сравнение

  • all() используется, когда необходимо убедиться, что все элементы соответствуют условию.
  • any() применяется, когда достаточно выполнения условия хотя бы для одного элемента.

Пример выбора:

# Проверка, что все пользователи совершеннолетние
ages = [22, 19, 25]
adults = all(age >= 18 for age in ages)

# Проверка, что есть хотя бы один администратор
permissions = [False, False, True]
has_admin = any(permissions)

Аналоги функции в других языках

JavaScript

Метод every() для массивов:

let numbers = [2, 4, 6, 8];
let result = numbers.every(x => x);
console.log(result); // true

PHP

Используется функция array_reduce() или циклы:

$values = [true, true, false];
$result = array_reduce($values, function($carry, $item) {
    return $carry && $item;
}, true);
var_dump($result); // bool(false)

Java

В Java Stream API есть метод allMatch():

List list = Arrays.asList(true, true, true);
boolean result = list.stream().allMatch(b -> b);
System.out.println(result); // true

C#

Метод расширения All() в LINQ:

bool[] bools = { true, true, false };
bool allTrue = bools.All(b => b);
Console.WriteLine(allTrue); // False

Типичные ошибки при использовании

Передача неитерируемого объекта

print(all(5))
TypeError: 'int' object is not iterable

Неправильное понимание работы со словарями

Функция проверяет ключи словаря, а не значения:

d = {0: 'a', 1: 'b'}
print(all(d))  # Проверяет ключи 0 и 1
False

Использование с генераторами

Генератор может быть потреблён только один раз:

gen = (x for x in [1, 2, 3])
print(all(gen))
print(list(gen))  # Генератор уже пуст
True
[]

Изменения в последних версиях Python

В Python 3 функция all() не претерпела значительных изменений в своей основной логике. Однако начиная с Python 3.8, в сочетании с выражениями-присваиваниями (walrus operator) появились новые варианты использования.

Пример с оператором :=:

data = [5, 10, 15, 20]
if all((x := val) > 4 for val in data):
    print(f'Все числа больше 4, последнее обработанное: {x}')
Все числа больше 4, последнее обработанное: 20

Расширенные примеры использования

Валидация данных

Проверка корректности списка email-адресов:

Пример python
emails = ['user@example.com', 'test@domain.ru', 'hello@world.org']
valid = all('@' in email and '.' in email for email in emails)
print(f'Все адреса корректны: {valid}')
Все адреса корректны: True

Проверка матрицы

Убедиться, что все элементы матрицы положительные:

Пример python
matrix = [[1, 2], [3, 4], [5, 6]]
result = all(all(cell > 0 for cell in row) for row in matrix)
print(result)
True

Комбинация с map

Проверка, что все строки в списке не пустые:

Пример python
strings = ['hello', 'world', 'python']
result = all(map(bool, strings))
print(result)
True

Работа с файлами

Проверка, что все строки в файле содержат определённый символ:

Пример python
# Предположим, файл data.txt содержит строки:
# apple
# banana
# apricot
with open('data.txt') as f:
    has_a = all('a' in line for line in f)
print(has_a)
True

Использование с zip

Сравнение соответствующих элементов нескольких списков:

Пример python
list1 = [10, 20, 30]
list2 = [10, 25, 30]
list3 = [10, 20, 30]
result = all(x == y == z for x, y, z in zip(list1, list2, list3))
print(result)
False

питон all function comments

En
All Return True if all elements are true