numpy按位运算符的优先顺序是什么&和| ?Numpy按位运算符优先级?
,如果我做
a & b | c
它评价是什么表情? a & (b | c)
? (a & b) | c
?
如何
a | b & c
我还假设NOT(〜)具有最高的优先级?
numpy按位运算符的优先顺序是什么&和| ?Numpy按位运算符优先级?
,如果我做
a & b | c
它评价是什么表情? a & (b | c)
? (a & b) | c
?
如何
a | b & c
我还假设NOT(〜)具有最高的优先级?
这是您可以在互联网连接断开时使用的技术。它适用于你可能有的许多问题。该技术的口语化描述是“吸引并看到”。
>>> from itertools import product
>>> list(product(range(2), repeat=3))
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
>>> all((a & b | c) == ((a & b) | c) for a, b, c in product(range(2), repeat=3))
True
>>> all((a & b | c) == (a & (b | c)) for a, b, c in product(range(2), repeat=3))
False
参照this section of the documentation,还有this page(谢谢@ F.J。)。
优先权是:
~
)&
)^
)|
)这意味着:
a & b | c == (a & b) | c
a | b & c == a | (b & c)
根据[this](http://docs.python.org/reference/expressions.html#summary),'^'的优先级高于'|'。容易证明,'1 | 2^3!=(1 | 2)^ 3'。 – 2012-01-04 21:08:07
好的。我做了编辑。 – Benjamin 2012-01-04 21:09:33
+1表示人们经常忽视的方法。 – prelic 2012-01-04 21:09:24
我绝对喜欢尝试看看的方法。一个小小的挑剔是,如果第一个语句是真的,那么两个操作符仍然可以具有相同的优先级,所以最好还是与运算符反转'(a | b&c)==((a | b)& C)'。既然这是错误的,你知道'&'比'|'具有更高的优先级,但对于像'+'和'-'这样具有相同优先级的运算符来说也是如此。 – 2012-01-04 21:18:56