Как сделать отрицание в питоне
Логические операторы в 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 __() вызывается только один раз, что подтверждается выводом оператора печати.
На диаграмме ниже изображена логическая блок-схема и схема работы.
Логический оператор OR
Давайте посмотрим на простой пример логического оператора OR.
Выход: по крайней мере одно из x и y является положительным числом.
Давайте подтвердим это простым фрагментом кода. Мы будем повторно использовать класс данных, определенный ранее.
Обратите внимание, что метод __bool __() вызывается только один раз и, поскольку он оценивается как True, дальнейшие выражения не оцениваются.
Давайте запустим еще один пример, в котором оба логических значения объекта данных возвращают False.
Наконец, на изображении ниже изображена блок-схема логического оператора или оператора.
Оператор NOT
Это очень простой оператор, работающий с одним логическим значением. Если логическое значение равно True, тогда оператор not вернет False и наоборот.
Результат: 37 не делится ни на 3, ни на 4.
Операторы оцениваются слева направо
Давайте посмотрим на пример, где у нас есть несколько логических операторов. Мы не смешиваем разные типы операторов в 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 есть три логических оператора.
Блок-схема
На изображении ниже изображена блок-схема логических операторов.
Логический оператор И в Python
Утверждение возвращается, чтобы быть истинным, если оба утверждения / условия верны.
Пример:
Вывод: и a, и b — положительные числа.
Логический оператор ИЛИ в Python
Утверждение возвращается истинным, когда любое из утверждений / условий истинно.
Пример:
Логический оператор НЕ в Python
Этот оператор работает с одним значением. Он меняет результат на противоположный, т. е. Если утверждение истинно, оператор not превратит утверждение в ложное и наоборот.
Пример:
В приведенном выше примере условие a % 4 or a > 0 оценивается как True. Но, поскольку мы использовали оператор not, он меняет результат, т.е. дает результат как False.
Читайте также: