了解列表上的布尔和位运算与 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 数组支持向量化计算,这意味着可以同时对多个元素执行操作。
“and”不能用于长度大于 1 的 NumPy 数组,因为数组没有简单的布尔值。
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中文网其他相关文章!