Как сделать отрицание в питоне

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Логические операторы в Python позволяют нам выполнять логические операции AND, OR, и NOT между логическими значениями. В этой статье мы более подробно рассмотрим выполнение логического оператора.

В Python есть три логических оператора:

and Логический оператор AND flag = True и True = True
or Логический оператор OR flag = False или True = True
not Логический оператор NOT flag = not (False) = True

Логический оператор AND в Python

Вот простой пример логического оператора and.

Вывод: и x, и y – положительные числа.

Перед выполнением логической операции выражения оцениваются. Таким образом, приведенное выше условие if аналогично приведенному ниже:

В Python каждая переменная или объект имеет логическое значение.

Вывод: И x, и y имеют логическое значение True, потому что функция len() ‘x’ и ‘y’ вернет 2, т.е.> 0.

Давайте подтвердим приведенное выше утверждение, определив настраиваемый объект. Python использует функцию __bool __() для получения логического значения объекта.

Обратите внимание, что функция __bool __() вызывается только один раз, что подтверждается выводом оператора печати.

На диаграмме ниже изображена логическая блок-схема и схема работы.

Логическая блок-схема в Python

Логический оператор OR

Давайте посмотрим на простой пример логического оператора OR.

Выход: по крайней мере одно из x и y является положительным числом.

Давайте подтвердим это простым фрагментом кода. Мы будем повторно использовать класс данных, определенный ранее.

Обратите внимание, что метод __bool __() вызывается только один раз и, поскольку он оценивается как True, дальнейшие выражения не оцениваются.

Давайте запустим еще один пример, в котором оба логических значения объекта данных возвращают False.

Наконец, на изображении ниже изображена блок-схема логического оператора или оператора.

Логический оператор или оператор

Оператор NOT

Это очень простой оператор, работающий с одним логическим значением. Если логическое значение равно True, тогда оператор not вернет False и наоборот.

Результат: 37 не делится ни на 3, ни на 4.

Логический оператор Not в Python

Операторы оцениваются слева направо

Давайте посмотрим на пример, где у нас есть несколько логических операторов. Мы не смешиваем разные типы операторов в Python, поэтому приоритет операторов не будет очевиден и будет легче объяснить результат.

Обратите внимание, что логическое значение сначала вычисляется для d1, тем самым подтверждая, что выполнение происходит слева направо.

Работают ли с любым настраиваемым объектом?

В Python каждый объект имеет логическое значение. Таким образом, логические операторы будут работать и с любыми настраиваемыми объектами. Однако мы можем реализовать функцию __bool __(), чтобы определить наши собственные правила для логического значения объекта.

Вы можете объединить несколько условий в одно выражение в условных операторах в Python, таких как if, if-else и elif. Это позволяет избежать ненужного написания нескольких вложенных операторов if.

В следующих примерах мы увидим, как мы можем использовать логический оператор AND для формирования составного логического выражения.

Пример 1: с оператором If

В следующем примере мы узнаем, как использовать логический оператор and в операторе If, чтобы объединить два логических условия для формирования составного выражения.

Чтобы продемонстрировать преимущества команды and, мы сначала напишем вложенный оператор if, а затем простой оператор, где он реализует ту же функциональность, что и вложенный оператор.

Пример 2: с оператором If-Else

В следующем примере мы будем использовать оператор and для объединения двух основных условных выражений в логическое выражение оператора If-Else.

Пример 3: с оператором elif

В следующем примере мы будем использовать функцию and для объединения двух основных условных выражений в логическое выражение оператора elif.

Мы узнали, как использовать логический оператор and с условными операторами: if, if-else и elif с хорошо подробными примерами.

Оператор OR

Вы можете объединить несколько условий в одно выражение в операторах if, If-Else или Elif.

В следующих примерах мы увидим, как мы можем использовать OR для формирования составного логического выражения.

Логический оператор OR возвращает True, если один из двух предоставленных ему операндов имеет значение true.

Пример 1: с оператором If

В следующем примере мы узнаем, как использовать OR для соединения двух логических условий для формирования логического выражения.

Пример 2: с оператором If-Else

В следующем примере мы будем использовать оператор OR для объединения двух основных условных выражений в логическое выражение.

Пример 3: с оператором elif

В следующем примере мы будем использовать OR для объединения двух основных условных выражений в логическое выражение операторов elif.

Мы узнали, как использовать оператор OR логический оператор с условным оператором Python: if, if-else и elif с хорошо подробными примерами.

Оператор NOT

Мы можем использовать логический оператор not с условием IF. Операторы внутри блока if выполняются только в том случае, если значение (логическое) равно False или если значение (коллекция) не пусто.

Синтаксис

Где, значение может иметь тип boolean, string, list, dict, set и т.д.

Если значение имеет логический тип, NOT действует как оператор отрицания. Если значение равно False, значение not будет True, и операторы в блоке if будут выполняться. Если value равно True, not value будет False, и операторы в блоке if не будут выполняться.

Если значение имеет строковый тип, то операторы в блоке if будут выполняться, если строка пуста.

Если значение имеет тип list, тогда операторы в блоке if будут выполняться, если список пуст. Такое же объяснение справедливо для значений других типов данных коллекции: dict, set и tuple.

Таким образом, мы можем использовать if not expression для условного выполнения блока операторов, только если значение не пустое или не False.

Пример 4

В этом примере мы будем использовать нелогический оператор NOT в логическом выражении IF.

Пример 5: для печати строки

В этом примере мы будем использовать if not expression для печати строки, только если строка не пуста.

Пример 6: для печати списка

В этом примере мы будем использовать if not expression для печати списка только в том случае, если список не пуст.

Пример 7: для печати словаря

В этом примере мы будем использовать if not expression для печати словаря, только если словарь не пуст.

Пример 8: для печати набора

В этом примере мы будем использовать if not expression для печати набора, только если набор не пуст.

Пример 9: для печати кортежа

В этом примере мы будем использовать if not expression для печати кортежа, только если кортеж не пуст.

Мы научились использовать оператор not вместе с условным оператором if с помощью примеров программ.

Есть ли способ пропустить второе выражение if? Просто сказать компьютеру вернуть противоположное логическое значение bool ?

Вы можете просто использовать:

Принятый ответ здесь является наиболее правильным для данного сценария.

Каким было мое первоначальное решение, а затем принятый ответ на этот вопрос:

Последнее более понятно, но я задумался над производительностью и решил ее через timeit - и оказалось, что n = not n также является БЫСТРЫМ способом инвертировать логическое значение.

Если вы пытаетесь реализовать переключатель , чтобы каждый раз, когда вы повторно запускаете постоянный код, который отменяется, вы можете добиться этого следующим образом:

Запуск этого кода сначала установит toggle в True , и каждый раз, когда вызывается этот фрагмент, переключение будет отменено.

Вы можете просто сравнить логический массив. Например

В Python есть оператор not, верно? Разве это не просто "нет"? Как в,

not оператор (логическое отрицание)

Вероятно, лучший способ - использовать оператор not :

Итак, вместо вашего кода:

Вы можете использовать:

Логическое отрицание как функция

В модуле operator также есть две функции operator.not_ и его псевдоним operator.__not__ на тот случай, если он вам понадобится как функция, а не как оператор:

Это может быть полезно, если вы хотите использовать функцию, которая требует функции-предиката или обратного вызова.

Конечно, то же самое может быть достигнуто с помощью эквивалентной функции lambda :

Не используйте оператор побитового инвертирования ~ в логических значениях

Это потому, что True эквивалентно 1 и False к 0 , а побитовая инверсия работает с поразрядным представлением целых чисел 1 и 0 .

Отрицание с массивами NumPy (и подклассами)

Если вы имеете дело с массивами NumPy (или подклассами вроде pandas.Series или pandas.DataFrame ), содержащими логические значения, вы можете фактически использовать побитовый обратный оператор ( ~ ), чтобы отрицать все логические значения в массиве:

Или эквивалентная функция NumPy:

Вы не можете использовать оператор not или функцию operator.not в массивах NumPy, поскольку они требуют, чтобы они возвращали один bool (не массив логических значений), однако NumPy также содержит логическую функцию not это работает поэлементно:

Это также может быть применено к небулевым массивам:

Настройка ваших собственных классов

not работает, вызывая bool для значения и отменяя результат. В простейшем случае истинное значение просто вызовет > на объекте.

Так что, реализовав __bool__ (или __nonzero__ в Python 2) вы можете настроить значение истинности и, таким образом, результат not :

Я добавил оператор print , чтобы вы могли убедиться, что он действительно вызывает метод:

Аналогичным образом вы можете реализовать __invert__ для реализации поведения. когда ~ применяется:

Снова с print вызовом, чтобы увидеть, что это на самом деле называется:

Операторы Python — это слова, которые говорят интерпретатору Python выполнять определенные задачи. Логические операторы используются для объединения нескольких логических операторов.

В Python есть три логических оператора.

3 Логических Оператора Python

Блок-схема

На изображении ниже изображена блок-схема логических операторов.

Блок-Схема Логических Операторов

Логический оператор И в Python

Утверждение возвращается, чтобы быть истинным, если оба утверждения / условия верны.

Пример:

Вывод: и a, и b — положительные числа.

Логический оператор ИЛИ в Python

Утверждение возвращается истинным, когда любое из утверждений / условий истинно.

Пример:

Логический оператор НЕ в Python

Этот оператор работает с одним значением. Он меняет результат на противоположный, т. е. Если утверждение истинно, оператор not превратит утверждение в ложное и наоборот.

Пример:

В приведенном выше примере условие a % 4 or a > 0 оценивается как True. Но, поскольку мы использовали оператор not, он меняет результат, т.е. дает результат как False.

Читайте также: