Python逻辑`and`返回错误结果比较列表

Dav*_*ban 3 python boolean-logic

y1 = [True, True, False, False]
y2 = [False, True, True, False]
y3 = y1 and y2

print(y3)
>>> [False, True, True, False]
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?在操作中的第三项是FalseTrue这个结果True

khe*_*ood 5

X and Y 评价为:

  • X(如果X假的
  • Y(如果X真的

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

因此,如果

y1 = [True, True, False, False]
Run Code Online (Sandbox Code Playgroud)

y2 = [False, True, True, False]
Run Code Online (Sandbox Code Playgroud)

然后y1 and y2计算为y2,即[False, True, True, False]

如果您想要and列表中的单个元素,您可以zip使用列表理解来实现

y3 = [x1 and x2 for x1,x2 in zip(y1,y2)]
Run Code Online (Sandbox Code Playgroud)