Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结合布尔掩码,为什么在Python中是:[False,True]和[True,False]==[True,False]_Python - Fatal编程技术网

结合布尔掩码,为什么在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