Python 中(布尔列表)和(另一个布尔列表)的奇怪行为

Weird behavior of (boolean list) and (another boolean list) in Python

谁能解释一下这种奇怪的行为?

无论我的 IDE.

如何,在布尔列表之间操作 and 似乎都是错误的
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
a=[True, True, False, True, False, False, False]
b=[True, False, False, True, True, True, False]
a and b
Out[4]: [True, False, False, True, True, True, False]
b and a
Out[5]: [True, True, False, True, False, False, False]
True and False
Out[6]: False
False and True
Out[7]: False

and returns 第一个或第二个操作数,基于它们的真值。如果第一个操作数被认为是 false,则返回它,否则返回另一个操作数。

当列表不为空时,列表被视为 True。他们的元素在这里不起作用。

因为两个列表都不为空,a and b 只需 returns 第二个列表对象。

如果你想按元素操作,你可以这样做:

element-wise =  [x and y for x, y in zip(a, b)] #suggested by @johnrsharpe

Python 的 and 将 return 最后一个比较的项目,如果所有比较的项目都是真实的(a and bb and a)。 True and FalseFalse and True 语句的计算结果为 False(您的最后两个案例)。