代码之家  ›  专栏  ›  技术社区  ›  user3471881

为什么在计算布尔倒数级数和时需要括号或新变量?

  •  2
  • user3471881  · 技术社区  · 7 年前

    >> s = pd.Series([True, False, True, False, True])
    

    >> ~s.values == (~s).values
    array([True,  True, True,  True, True])
    

    但是

    >> ~s.values.sum()
    -4 
    >> (~s).values.sum()
    2
    

    及

    >> x = ~s.values
    >> x.sum() == (~s).values.sum()
    True
    

    (~s).values 或商店 ~s.values ~Series.sum() 给我们正确的数字 False 价值观 s


    >> ~3 is -4
    True
    
    3 回复  |  直到 7 年前
        1
  •  4
  •   juanpa.arrivillaga    7 年前

    因为 precedence ~ 操作人员所以它在被否定之前被求和。

    换句话说,它被评估为:

    ~((s.values).sum())
    
        2
  •  0
  •   cwallenpoole    7 年前

    它与评估顺序有关(或 precedence ). ~ 生成表达式向右的反转。

        3
  •  0
  •   Philip Kossack    7 年前