Функция all#
Функция all возвращает True, если все элементы истинные (или объект пустой).
In [1]: all([False, True, True]) Out[1]: False In [2]: all([True, True, True]) Out[2]: True In [3]: all([]) Out[3]: True
Например, с помощью all можно проверить, все ли октеты в IP-адресе являются числами:
In [4]: ip = '10.0.1.1' In [5]: all(i.isdigit() for i in ip.split('.')) Out[5]: True In [6]: all(i.isdigit() for i in '10.1.1.a'.split('.')) Out[6]: False
Функция any#
Функция any возвращает True, если хотя бы один элемент истинный.
In [7]: any([False, True, True]) Out[7]: True In [8]: any([False, False, False]) Out[8]: False In [9]: any([]) Out[9]: False In [10]: any(i.isdigit() for i in '10.1.1.a'.split('.')) Out[10]: True
Например, с помощью any, можно заменить функцию ignore_command:
def ignore_command(command): ''' Функция проверяет содержится ли в команде слово из списка ignore. * command - строка. Команда, которую надо проверить * Возвращает True, если в команде содержится слово из списка ignore, False - если нет ''' ignore = ['duplex', 'alias', 'Current configuration'] for word in ignore: if word in command: return True return False
На такой вариант:
def ignore_command(command): ''' Функция проверяет содержится ли в команде слово из списка ignore. command - строка. Команда, которую надо проверить Возвращает True, если в команде содержится слово из списка ignore, False - если нет ''' ignore = ['duplex', 'alias', 'Current configuration'] return any([word in command for word in ignore])
Как использовать функции all() и any() в Python
Данная статья посвящена встроенным функциям Python any() и all() . Их можно использовать, чтобы проверить на истинность каждый элемент в итерируемом типе и на основе возвращённого значения реализовывать дальнейшую логику.
Функция All()
Функция all() возвращает True, если все элементы в итерируемом типе являются истинными. Рассмотрим следующий пример:
item_list = [True, True, True, True] print (all(item_list))
При вызове функции all() в качестве аргумента в неё передаётся итерируемый объект item_list . После выполнения кода выше вы получите следующий результат:
True
В данном случае функция all() вернула значение True, так как все элементы в итерируемом объекте равны True.
Любые непустые строки всегда рассматриваются как True.
item_list = ["mango", "banana", "apple", "orange"] print (all(item_list))
Код вернёт следующий результат:
True
Если список совершенно пуст, all() всегда будет возвращать True.
item_list = [] print (all(item_list))
True
Если некоторые элементы итерируемого объекта – пустые строки, при вызове all() они считаются False:
item_list = ["mango", "banana", "apple", ""] print (all(item_list))
При запуске данного фрагмента кода вы получите следующий результат:
False
Так как последний элемент (пустая строка) в item_list был False, функция all() вернула значение False.
Если элемент равен 0 (тип int , пишется без кавычек), функция all() расценит его как False:
item_list = ["mango", "banana", "apple", 0] print (all(item_list))
False
И, наконец, если элемент просто равен False (булево значение), all() вернёт False:
item_list = ["mango", "banana", "apple", False] print (all(item_list))
False
То есть, если передать в функцию all() не пустой итерируемый объект, она всегда будет возвращать True , если в объекте не окажется следующих трех значений:
- «» (пустая строка)
- 0 (без кавычек, тип int )
- False (без кавычек, тип boolean)
Иногда вам может понадобиться преобразовать каждое значение итерируемого типа в True или False на основании определённых условий и затем вызвать для результата функцию all() . В этом случае вы можете использовать синтаксис списковых включений, чтобы напрямую передавать значения True или False в функцию:
item_list = [1, 2, 3, 4, 5, 6] print (all(item > 2 for item in item_list))
В функции print() синтаксис списковых включений используется там, где цикл for пробегает по элементам item_list . Каждый элемент в item_list сравнивается с 2, и, если он больше, он становится True, в противном случае — False. Затем функция all() проверяет на истинность каждый элемент.
False
Вы можете проверить результат, добавив ещё один print() :
item_list = [1, 2, 3, 4, 5, 6] print (all(item > 2 for item in item_list)) print ([item > 2 for item in item_list])
Данный код выведет следующий результат:
False [False, False, True, True, True, True]
Не все значения здесь истинны, поэтому функция all() вернёт False.
Функция any()
Функция any() возвращает значение True, если хотя бы один элемент во всём итерируемом типе истинный. Например:
item_list = [True, True, True, False] print (any(item_list))
Функция any() вызывается с аргументом итерируемого типа item_list . После запуска приведенного выше кода получим:
True
Здесь функция any() вернула True, так как по крайней мере один элемент в списке равен True.
Непустые строковые значения также всегда являются истинными.
item_list = ["mango", False] print (any(item_list))
True
Если список полностью пуст, any() всегда будет возвращать False:
item_list = [] print (any(item_list))
False
Если в итерируемом объекте содержатся пустые строки, при вызове any() их значение расценивается как False.
item_list = ["", ""] print (any(item_list))
Так как обе пустые строки считаются False, вы получите следующий результат:
False
В any() элемент со значением 0 также будет считаться False:
item_list = [0, 0] print (any(item_list))
False
Синтаксис списковых включений, использовавшийся в функции all() выше, так же применим и к any() . Разберем его еще раз.
Для передачи напрямую в функцию any() значения True/False, используем синтаксис списковых включений:
item_list = [1, 2, 3, 4, 5, 6] print (any(item > 2 for item in item_list))
В функции print() этот синтаксис применяется в момент, когда цикл for проходится по item_list . Каждое число в item_list сравнивается с 2: больше 2 — True, иначе — False. Затем функция any() проверяет истинность каждого элемента. После запуска данного кода вы получите следующий результат:
True
Вы можете также проверить его, используя дополнительный print() :
item_list = [1, 2, 3, 4, 5, 6] print (any(item > 2 for item in item_list)) print ([item > 2 for item in item_list])
True [False, False, True, True, True, True]
Наличие хотя бы одного «истинного» элемента приводит к тому, что any() возвращает True.
Заключение
В Python есть разнообразные способы применения функций any() и all() . Конечно, вы можете легко реализовать подобные функции самостоятельно, но ведь есть уже готовые! Вообще, в Python можно найти множество таких маленьких вспомогательных функций, позволяющих избегать многословности и выполнять максимум работы при минимуме строк кода.
Функция all() в Python, все элементы True
Проверяет, что все элементы в последовательности True
Синтаксис:
all(iterable)
Параметры:
- iterable — итерируемый объект (список, кортеж, словарь).
Возвращаемое значение:
- bool — значение логического типа True или False .
Описание:
Функция all() возвращает значение True , если все элементы в итерируемом объекте — истинны, в противном случае она возвращает значение False .
Если передаваемая последовательность пуста, то функция all() также возвращает True .
Функция all() применяется для проверки на True ВСЕХ значений в последовательности и эквивалентна следующему коду:
def all(iterable): for element in iterable: if not element: return False return True
Дополнительно смотрите встроенную функцию any()
В основном функция all() применяется в сочетании с оператором ветвления программы if . else . Работу функции all() можно сравнить с оператором and в Python, только all() работает с последовательностями:
>>> True and True and True # True >>> True and False and True # False >>> all([True, True, True]) # True >>> all([True, False, True]) # False
Но между and и all() в Python есть два основных различия:
- Синтаксис.
- Возвращаемое значение.
Функция all() всегда возвращает False или True (значение bool )
>>> all([3, 1, 2, 6]) # True >>> all([3, 0, 2, []]) # False
Оператор and , возвращает ПОСЛЕДНЕЕ истинное значение, при условии, что в выражении все значения True а если в выражении присутствует значение False (ложное значение), то ПЕРВОЕ ложное значение. Что бы добиться поведения как у функции all() , необходимо выражение с оператором and обернуть в функцию bool() .
>>> 3 and 1 and 2 and 6 # 6 >>> 3 and 0 and 3 and [] # 0 >>> bool(3 and 1 and 2 and 6) # True >>> bool(3 and 0 and 3 and []) # False
Из всего сказанного можно сделать вывод, что для успешного использования функции all() необходимо в нее передавать последовательность, полученную в результате каких то вычислений/сравнений, элементы которого будут оцениваться как 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] # использование оператора идентичности `is` >>> [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]
Примеры проводимых проверок функцией all() .
Допустим, у нас есть список чисел и для дальнейших операций с этой последовательностью необходимо знать, что все числа например положительные.
>>> num1 = range(1, 9) >>> num2 = range(-1, 7) >>> all([x > 0 for x in num1]) # True >>> all([x > 0 for x in num2]) # False
Или проверить, что последовательность чисел содержит только ЦЕЛЫЕ числа.
>>> num1 = [1, 2, 3, 4, 5, 6, 7] >>> num2 = [1, 2.0, 3.1, 4, 5, 6, 7.9] >>> all([type(x) is int for x in num1]) # True >>> all([type(x) is int for x in num2]) # False
Или есть строка с числами, записанными через запятую и нам необходимо убедится, что в строке действительно записаны только цифры. Для этого, сначала надо разбить строку на список строк по разделителю ‘,’ и проверить каждый элемент полученного списка на десятичное число методом str.isdigit() . Что бы учесть правила записи десятичных чисел будем убирать точку перед проверкой строки на десятичное число.
>>> line1 = "1, 2, 3, 9.9, 15.1, 7" >>> line2 = "1, 2, 3, 9.9, 15.1, 7, девять" >>> all([x.replace('.', '').strip().isdigit() for x in line1.split(',')]) # True >>> all([x.replace('.', '').strip().isdigit() for x in line2.split(',')]) # False
Еще пример со строкой. Допустим нам необходимо узнать, есть ли в строке наличие открытой И закрытой скобки?
>>> simbols = ['(', ')'] >>> line1 = "функция 'all()' всегда возвращает 'False' или 'True'" >>> line2 = "функция any всегда возвращает значение bool" >>> all([x in line1 for x in simbols]) # True >>> all([x in line2 for x in simbols]) # False
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
Метод all() в Python
Метод all() в Python возвращает True, если все элементы в данной итерации верны. Если нет, возвращается False.
all(iterable)
Параметры
all() принимает единственный параметр:
- iterable — любой итерабельный (список, кортеж, словарь и т. д.), который содержит элементы
Возвращаемое значение
- Истина — если все элементы в итерации верны
- False — если какой-либо элемент в итерации имеет значение false
Пример 1: Как all() работает со списками?
# all values true l = [1, 3, 4, 5] print(all(l)) # all values false l = [0, False] print(all(l)) # one false value l = [1, 3, 4, 0] print(all(l)) # one true value l = [0, False, 5] print(all(l)) # empty iterable l = [] print(all(l))
True False False False True
Метод any() работает аналогичным образом для кортежей и наборов, таких как списки.
Пример 2: работа со строками
s = "This is good" print(all(s)) # 0 is False # '0' is True s = '000' print(all(s)) s = '' print(all(s))
True True True
Пример 3: со словарями
В случае словарей, если все ключи (не значения) верны или словарь пуст, all() возвращает True. В противном случае он возвращает false для всех остальных случаев.
s = print(all(s)) s = print(all(s)) s = print(all(s)) s = <> print(all(s)) # 0 is False # '0' is True s = print(all(s))
False True False True True