HOWTO · Python

Negation eines booleschen Wertes ermitteln in Python

In diesem Tutorial wird gezeigt, wie ein Boolean in Python negiert wird.

Auf dieser Seite

Mit Pythons not-Operator lässt sich der Wahrheitswert eines skalaren Ausdrucks umkehren. Für ein NumPy-Boolean-Array eignet sich eine elementweise Operation wie ~ oder numpy.logical_not(). Auch die NumPy-Funktionen bitwise_not() und invert() kehren die Elemente eines Boolean-Arrays um.

Mit dem Operator not einen booleschen Wert in Python negieren

Der Operator not prüft zuerst den Wahrheitswert seines Operanden und gibt anschließend einen booleschen Wert zurück: Aus True wird False und aus False wird True. Er akzeptiert auch Werte, die selbst keine booleschen Werte sind. Zum Beispiel ergibt not 1 den booleschen Wert False, weil 1 als wahr gilt. Das Ergebnis ist der boolesche Wert False, nicht die Ganzzahl 0.

Dieses Beispiel kehrt eine Bedingung um und gibt den resultierenden booleschen Wert aus:

a = 1
print(bool(a))
print(not a)

Mit der Funktion operator.not_() aus dem Modul operator einen booleschen Wert in Python negieren

Die Funktion operator.not_() aus der Standardbibliothek ist das aufrufbare Gegenstück zu Pythons not-Operator. Sie prüft den Wahrheitswert ihres Arguments und gibt einen booleschen Wert zurück. Verwenden Sie sie, wenn eine Operation als Funktion übergeben werden muss, etwa an map() für eine Liste:

import operator

values = [True, True, False, True, False]
print(operator.not_(True))
print(list(map(operator.not_, values)))

map() wendet die übergebene Funktion auf jedes Element des Iterables an. In diesem Beispiel ist jedes Listenelement ein boolescher Wert; die resultierende Liste enthält jeweils den entgegengesetzten Wert.

Mit dem Operator ~ boolesche Werte eines NumPy-Arrays in Python negieren

Bei einem NumPy-Array mit Boolean-Datentyp führt der Operator ~ elementweise eine bitweise Invertierung aus: Jedes True wird zu False und jedes False zu True:

import numpy as np

values = np.array([True, True, False, True, False])
print(~values)

Dieses Verhalten bei Boolean-Arrays eignet sich zum Umkehren einer Maske. Python-Ganzzahlen sind keine booleschen Werte: Bei einer Ganzzahl führt ~ eine bitweise Ganzzahl-Invertierung aus. Verwenden Sie den Operator daher nicht als Ersatz für die Negation des Wahrheitswerts eines skalaren Ausdrucks.

Mit der NumPy-Funktion bitwise_not() einen booleschen Wert negieren

numpy.bitwise_not() ist die Funktionsform der bitweisen Operation. Auf ein Boolean-Array angewendet, invertiert sie jedes Element und liefert dasselbe elementweise Boolean-Ergebnis wie ~:

import numpy as np

values = np.array([True, True, False, True, False])
print(np.bitwise_not(values))

Verwenden Sie diese Funktion, wenn eine benannte NumPy-Operation gut zu Ihrem Code passt. Sie funktioniert auch mit einem einzelnen NumPy-Boolean-Wert.

Mit der NumPy-Funktion invert() einen booleschen Wert in Python negieren

numpy.invert() ist eine weitere Bezeichnung für NumPys elementweise bitweise Invertierung. Bei Boolean-Arrays verhält sie sich wie bitwise_not() und ~:

import numpy as np

values = np.array([True, True, False, True, False])
print(np.invert(values))

Wählen Sie die Schreibweise, die die Operation in Ihrem Code am klarsten ausdrückt. Wie bei ~ führt invert() auf Ganzzahldaten eine bitweise Invertierung aus und keine Negation des booleschen Wahrheitswerts.

Mit der NumPy-Funktion logical_not() einen booleschen Wert in Python negieren

numpy.logical_not() führt eine elementweise logische Negation aus. Bei einem Boolean-Array liefert sie dieselben Werte wie die zuvor beschriebenen bitweisen Invertierungsfunktionen; ihr Name hebt jedoch die logischen Wahrheitswerte hervor:

import numpy as np

values = np.array([True, True, False, True, False])
print(np.logical_not(values))

Verwenden Sie für einen skalaren Python-Ausdruck not. Für ein Boolean-Array liefert eine dieser NumPy-Operationen das entsprechende elementweise Array-Ergebnis.