Verstehen des Verhaltens von booleschen und bitweisen Operationen auf Listen im Vergleich zu NumPy-Arrays
Einführung
In Python unterscheiden sich die Operatoren „and“ und „&“ in ihrem Verhalten, wenn sie für Listen und NumPy verwendet werden Arrays. Dieser Unterschied kann rätselhaft sein, insbesondere wenn Sie mit bitweisen Operationen nicht vertraut sind.
Boolesche vs. bitweise Operationen
'and' ist ein logischer Operator, der testet, ob beides funktioniert seiner Operanden sind logisch wahr. „&“ hingegen ist ein bitweiser Operator, der bitweise Operationen (z. B. AND, OR, XOR) an seinen Operanden ausführt.
Verhalten mit Listen
Bei Verwendung mit Listen wertet „und“ die Listenelemente als boolesche Werte aus. Wenn alle Elemente wahr sind, wird „und“ als wahr ausgewertet; andernfalls wird der Wert als „Falsch“ ausgewertet. Beispiel:
mylist1 = [True, True, True, False, True] mylist2 = [False, True, False, True, False] mylist1 and mylist2 # Output: [False, True, False, True, False]
'&' unterstützt jedoch keine bitweisen Operationen auf Listen. Es wird ein TypeError ausgelöst, da Listen beliebige Elemente enthalten.
mylist1 & mylist2 # Output: TypeError: unsupported operand type(s)
Verhalten mit NumPy-Arrays
Bei NumPy-Arrays ist das Verhalten anders. NumPy-Arrays unterstützen vektorisierte Berechnungen, was bedeutet, dass Operationen an mehreren Elementen gleichzeitig ausgeführt werden können.
'und' kann nicht für NumPy-Arrays mit einer Länge größer als eins verwendet werden, da Arrays keinen einfachen booleschen Wert haben.
import numpy as np np_array1 = np.array(mylist1) np_array2 = np.array(mylist2) np_array1 and np_array2 # Output: ValueError: The truth value of an array with more than one element is ambiguous
Allerdings kann „&“ für NumPy-Arrays mit booleschen Werten verwendet werden, um bitweise UND-Operationen durchzuführen elementweise.
np_array1 & np_array2 # Output: array([False, True, False, False, False], dtype=bool)
Zusammenfassung
Das obige ist der detaillierte Inhalt vonWie unterscheiden sich „and' und „&' bei der Verwendung mit Listen und NumPy-Arrays in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!