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