Understanding the working mechanis of python unary arithmetic operators.
hongyi.zhao at gmail.com
Sun Oct 3 02:18:05 EDT 2021
On Saturday, October 2, 2021 at 4:59:54 PM UTC+8, ju... at diegidio.name wrote:
> On Saturday, 2 October 2021 at 10:34:27 UTC+2, hongy... at gmail.com wrote:
> > See the following testings:
> > In : a=3.1415926535897932384626433832795028841971
> > In : -a
> > Out: -3.141592653589793
> You've never heard of floating-point? Double precision has 53 significant bits of mantissa, corresponding approximately to 16 decimal digits.
> > In : ~-+1
> > Out: 0
> << The unary ~ (invert) operator yields the bitwise inversion of its integer argument. The bitwise inversion of x is defined as -(x+1). It only applies to integral numbers or to custom objects that override the __invert__() special method. >>
A further inference based on the above description:
Let us consider this equation: -(x+1) = x, the solution is -0.5, which is not an integer. So we can safely come to a conclusion:
If bool(a) == True, \forall a \in integer, then ~bool(a) == False; and vice versa.
This is exactly the theoretical basis to filter some specific columns in pandas, just as the issue discussed here .
More information about the Python-list