【发布时间】:2013-09-21 20:54:14
【问题描述】:
>>> l=[(i,j,k) for i in {-4,-2,1,2,5,0} for j in {-4,-2,1,2,5,0} for k in {-4,-2,1,2,5,0} if i+j+k==0 if i==0 & j==0 & k==0]
>>> l
[(0, 0, 0), (0, 2, -2), (0, -2, 2)]
上面的 Python 3 代码找到三元组 (i,j,k) 使得 i+j+k=0 并且所有元素都是 0。所以答案应该是 (0,0,0)。
但答案是[(0, 0, 0), (0, 2, -2), (0, -2, 2)]
经过一番搜索,我发现问题在于使用&而不是and。我知道and是逻辑运算符,&是按位运算符。
但我无法弄清楚为什么我得到了使用& 得到的答案。
Python3如何处理相等检查操作?
【问题讨论】:
-
我不明白这与相等性检查有什么关系。
-
我是这里的新手。所以如果你觉得有问题,请编辑标题。
标签: python python-3.x bit-manipulation logical-operators