Что такое all в питоне
Перейти к содержимому

Что такое all в питоне

  • автор:

Функция 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *