2016-03-25 111 views
5

结果应该不一样吗? 我不明白。python中的布尔表操作

[True,False] and [True, True] 
Out[1]: [True, True] 

[True, True] and [True,False] 
Out[2]: [True, False] 
+0

您要做什么? – SubliemeSiem

+0

什么?这些清单不应该是价值明智的吗? – ForceBru

+0

[a和b代表a,b在zip(x,y)],这就是我正在尝试做的事情。 – Tang

回答

2

不,因为这不是and操作在python中的工作方式。首先它不分开and列表项。其次,and运算符在两个对象之间工作,如果其中一个为False(evaluated as False ),则返回该对象,如果两者都为True,则返回第二个对象。这里有一个例子:

>>> [] and [False] 
[] 
>>> 
>>> [False] and [] 
[] 
>>> [False] and [True] 
[True] 

x and y:如果x是假的,那么x,否则y

如果要应用在所有可以使用numpy的数组列表对逻辑运算:

>>> import numpy as np 
>>> a = np.array([True, False]) 
>>> b = np.array([True, True]) 
>>> 
>>> np.logical_and(a,b) 
array([ True, False], dtype=bool) 
>>> np.logical_and(b,a) 
array([ True, False], dtype=bool) 

1.此处由于您处理列表,空列表将被评估为False

+1

[a和b代表a,b在zip(x,y)],谢谢,那也行得通 – Tang