Python逻辑并返回错误结果

时间:2018-06-19 12:04:05

标签: python boolean-logic

y1=[True, True, False, False]

y2=[False, True, True, False]

y3=y1 and y2

print(y3)

结果:

[False, True, True, False]

这是怎么回事?运算中的第三个项目为False和True,结果为True?

3 个答案:

答案 0 :(得分:4)

const department = Department.build( { id: departmentId } ); // proceed as above 如果X and Y为假,则为X;如果X为假,则为Y

任何非空列表都是真实的。

如果

X

y1 = [True, True, False, False]

然后y2 = [False, True, True, False] 的计算结果为y1 and y2的{​​{1}}。

如果您想y2列表中的各个元素,可以使用ziplist comprehension来做到:

[False, True, True, False]

答案 1 :(得分:0)

x     | y     | x and y
------|-------|---------
True  | True  | y
True  | False | y
False | True  | x
False | False | x

由于在Python的布尔表达式中将非空列表评估为True,因此x and y返回y

您正在寻找的是:

y3 = [a and b for a,b in zip(y1,y2)]

答案 2 :(得分:-1)

使用列表时,这将无法正常工作,因为AN运算符会起作用。但是,如果使用AND,则它将返回第二个优先级,即,如果第一个值为True,第二个为False,则将返回False;如果第一个值为False,第二个值为True,则将返回True。同样,这就是代码中发生的事情。如果您使用“ OR”,它将返回第一个优先级,即y1。