结合布尔掩码,为什么在Python中使用:[False,True]和[True,False] == [True,False]

时间:2020-07-30 10:35:30

标签: python

我正忙着组合口罩,这让我印象深刻:

>>> [False, True] and [True, False]
[True, False]

>>> [True, False] and [False, True]
[False, True]

为什么会这样?为什么在两种情况下我都不应该期望它是[False, False]

我也认为这就是np.logical_and()存在于Numpy中的原因:

>> np.logical_and([True, False], [False, False])
array([False, False])

1 个答案:

答案 0 :(得分:2)

这是相同的原因,

>>> (1,2) and (3,4)
(3, 4)

您需要了解,与np.logical_and相比,这不是在逐元素进行比较。

and的工作方式是,如果您有a and b,它将检查a是否为False,如果是,则返回a,否则返回{{ 1}},不管b的值是什么。

在您的情况下,b不是[False, True]

False

因为它是一个非空列表,所以即使>>> bool([False, True]) True 也是[False, False]。 因此,在True的情况下,它检查[False, True] and [True, False]是否为[False, True],不是,因此返回第二个值。其他情况也一样。

False and逻辑的python实现为:

or
相关问题