我有两个布尔列表,例如,
x=[True,True,False,False]
y=[True,False,True,False]
Run Code Online (Sandbox Code Playgroud)
我想和这些列表一起使用预期的输出:
xy=[True,False,False,False]
Run Code Online (Sandbox Code Playgroud)
我认为这个表达x and y
方式可行,但后来发现它没有:事实上,(x and y) != (y and x)
产量x and y
:[True,False,True,False]
产量y and x
:[True,True,False,False]
使用列表推导确实有正确的输出.呼!
xy = [x[i] and y[i] for i in range(len(x)]
Run Code Online (Sandbox Code Playgroud)
请注意,我找不到任何引用,告诉我AND运算符会在我尝试使用x和y时工作.但是在Python中尝试很容易.有人可以向我解释发生了x and y
什么吗?
这是一个简单的测试程序:
import random
random.seed()
n = 10
x = [random.random() > 0.5 for i in range(n)]
y = [random.random() > 0.5 for i in range(n)]
# Next two methods look sensible, but do not …
Run Code Online (Sandbox Code Playgroud)