y1=[True, True, False, False]
y2=[False, True, True, False]
y3=y1 and y2
print(y3)
结果:
[False, True, True, False]
这是怎么回事?运算中的第三个项目为False和True,结果为True?
答案 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
列表中的各个元素,可以使用zip
和list 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。