vir*_*ati 5 python comparison boolean list
我尝试:
[True,True,False] and [True,True,True]
Run Code Online (Sandbox Code Playgroud)
得到[真,真如此]
但
[True,True,True] and [True,True,False]
Run Code Online (Sandbox Code Playgroud)
给
[True,True,False]
Run Code Online (Sandbox Code Playgroud)
不太确定为什么它会给出那些奇怪的结果,即使在看了一些其他的python布尔比较问题之后.整数也是这样(替换True - > 1和False - > 0,结果相同).我错过了什么?我显然想要
[True,True,False] and [True,True,True]
Run Code Online (Sandbox Code Playgroud)
评估
[True,True,False]
Run Code Online (Sandbox Code Playgroud)
其他人已经解释了发生了什么.以下是获得所需内容的一些方法:
>>> a = [True, True, True]
>>> b = [True, True, False]
Run Code Online (Sandbox Code Playgroud)
使用listcomp:
>>> [ai and bi for ai,bi in zip(a,b)]
[True, True, False]
Run Code Online (Sandbox Code Playgroud)
使用以下and_功能map:
>>> from operator import and_
>>> map(and_, a, b)
[True, True, False]
Run Code Online (Sandbox Code Playgroud)
或者我的首选方式(虽然这确实需要numpy):
>>> from numpy import array
>>> a = array([True, True, True])
>>> b = array([True, True, False])
>>> a & b
array([ True, True, False], dtype=bool)
>>> a | b
array([ True, True, True], dtype=bool)
>>> a ^ b
array([False, False, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)