结合布尔掩码,为什么在Python中是:[False,True]和[True,False]==[True,False]
我正忙着组合面具,我突然想到:结合布尔掩码,为什么在Python中是:[False,True]和[True,False]==[True,False],python,Python,我正忙着组合面具,我突然想到: >>> [False, True] and [True, False] [True, False] 及 为什么会这样?为什么我不应该期望在这两种情况下都是[假,假] 我也认为这就是为什么Numpy存在的原因: 这也是为什么: >>> (1,2) and (3,4) (3, 4) 您需要理解,这并不是进行元素级比较,而不是np.logical_和 方法和工作原理是,如果有a和b,它会检查a是否为False,如果为False,则
>>> [False, True] and [True, False]
[True, False]
及
为什么会这样?为什么我不应该期望在这两种情况下都是[假,假]
我也认为这就是为什么Numpy存在的原因:
这也是为什么:
>>> (1,2) and (3,4)
(3, 4)
您需要理解,这并不是进行元素级比较,而不是np.logical_和
方法和工作原理是,如果有a和b,它会检查a是否为False,如果为False,则返回a,否则返回b,与b的值无关
在你的情况下[假,真]不是假:
因为它是一个非空列表,所以即使[False,False]也是真的。
因此在[False,True]和[True,False]的情况下,它检查[False,True]是否为False,而事实并非如此,因此它返回第二个值。另一种情况也一样
and或or逻辑的python实现是:
def AND(first, second):
if bool(first) == True:
return second
else:
return first
def OR(first, second):
if bool(first) == True:
return first
else:
return second
你不是在比较你认为你在比较的东西。bool[False,True]为True,bool[True,False]也为True。和的操作数是列表,而不是布尔值。
>>> (1,2) and (3,4)
(3, 4)
>>> bool([False, True])
True
def AND(first, second):
if bool(first) == True:
return second
else:
return first
def OR(first, second):
if bool(first) == True:
return first
else:
return second