【发布时间】:2012-01-04 20:46:59
【问题描述】:
numpy按位运算符&和|的优先级是多少?
如果我这样做了
a & b | c
它评估什么表达式? a & (b | c) ? (a & b) | c ?
怎么样
a | b & c
我还假设 NOT (~) 具有最高优先级?
【问题讨论】:
标签: python numpy operators bitwise-operators operator-precedence
numpy按位运算符&和|的优先级是多少?
如果我这样做了
a & b | c
它评估什么表达式? a & (b | c) ? (a & b) | c ?
怎么样
a | b & c
我还假设 NOT (~) 具有最高优先级?
【问题讨论】:
标签: python numpy operators bitwise-operators operator-precedence
当您的互联网连接中断时,您可以使用以下技术。它适用于您可能遇到的许多问题。该技术的通俗描述是“吸一口,看看”。
>>> 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
【讨论】:
(a | b & c) == ((a | b) & c)。因为这是错误的,所以您知道 & 的优先级高于 |,但对于具有相同优先级的运算符,如 + 和 - 来说,这是正确的。
请参阅 this section of the documentation 和 this page(感谢 @F.J.)。
优先级是:
~)&)^)|)这意味着:
a & b | c == (a & b) | c
a | b & c == a | (b & c)
【讨论】:
^ 的优先级高于|。易于证明,1 | 2 ^ 3 != (1 | 2) ^ 3。