On Sunday, October 3, 2021 at 2:18:17 PM UTC+8, hongy...@gmail.com wrote: > On Saturday, October 2, 2021 at 4:59:54 PM UTC+8, ju...@diegidio.name wrote: > > On Saturday, 2 October 2021 at 10:34:27 UTC+2, hongy...@gmail.com wrote: > > > See the following testings: > > > > > > In [24]: a=3.1415926535897932384626433832795028841971 > > > In [27]: -a > > > Out[27]: -3.141592653589793 > > You've never heard of floating-point? Double precision has 53 significant > > bits of mantissa, corresponding approximately to 16 decimal digits. > > <https://en.wikipedia.org/wiki/Double-precision_floating-point_format#IEEE_754_double-precision_binary_floating-point_format:_binary64> > > > > > In [17]: ~-+1 > > > Out[17]: 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. >> > > <https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations> > 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 [1].
Sorry my not very precise description above. I should have wanted to express the fact that I observed below: In [3]: import numpy as np In [15]: ~np.array([True]) Out[15]: array([False]) In [16]: ~np.array([False]) Out[16]: array([ True]) But the normal `True' and `False' don't the good symmetric feature as shown above: In [21]: bool(~True) Out[21]: True In [22]: bool(~False) Out[22]: True > [1] https://github.com/pandas-dev/pandas/issues/43832#issue-1013375587 > > HZ -- https://mail.python.org/mailman/listinfo/python-list