ホームページ >バックエンド開発 >Python チュートリアル >Python でリストと NumPy 配列を使用する場合、「and」と「&」はどのように異なりますか?
リストと NumPy 配列に対するブール演算とビット演算の動作を理解する
はじめに
Python の「and」演算子と「&」演算子リストと NumPy 配列で使用した場合の動作が異なります。この違いは、特にビット単位の演算に慣れていない場合には、困惑する可能性があります。
ブール演算とビット単位の演算
'and' は、両方の演算が行われているかどうかをテストする論理演算子です。そのオペランドのうちのは論理的に True です。一方、「&」は、オペランドに対してビット単位の演算 (AND、OR、XOR など) を実行するビット単位の演算子です。
リストの動作
リストで使用すると、「and」はリスト項目をブール値として評価します。すべての項目が True の場合、「and」は True と評価されます。それ以外の場合は、False と評価されます。例:
mylist1 = [True, True, True, False, True] mylist2 = [False, True, False, True, False] mylist1 and mylist2 # Output: [False, True, False, True, False]
'&' ただし、リストのビット単位の演算はサポートされていません。リストには任意の要素が含まれるため、TypeError が発生します。
mylist1 & mylist2 # Output: TypeError: unsupported operand type(s)
NumPy 配列での動作
NumPy 配列では、動作が異なります。 NumPy 配列はベクトル化された計算をサポートしています。つまり、複数の要素に対して一度に操作を実行できます。
配列には単純なブール値がないため、長さが 1 を超える NumPy 配列では「and」を使用できません。
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
ただし、「&」をブール値の NumPy 配列で使用して、ビット単位の AND 演算を実行できます。要素ごとに。
np_array1 & np_array2 # Output: array([False, True, False, False, False], dtype=bool)
概要
以上がPython でリストと NumPy 配列を使用する場合、「and」と「&」はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。