我正忙着组合口罩,这让我印象深刻:
>>> [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])
答案 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