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

是否可以只应用一次分配性质

  •  0
  • user1580256  · 技术社区  · 1 年前

    我一直在使用sympy来帮助简化表达式,但有时我希望sympy只做有限的简化/扩展。

    例如,假设我有以下代码:

    x = symbols("x")
    
    poly = x*(x**2+x*(x+2))
    

    如果我这样做, expand(poly) ,我扩展到一个没有括号的表达式,但是否可以只应用外部分配属性?,即仅获得: x^3+x^2(x+2) ?

    我试着看 https://docs.sympy.org/latest/tutorials/intro-tutorial/manipulation.html ,但似乎没有帮助。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Oscar Benjamin    1 年前

    您可以使用 deep=False :

    In [51]: x = symbols("x")
        ...: 
        ...: poly = x*(x**2+x*(x+2))
    
    In [52]: poly
    Out[52]: 
      ⎛ 2            ⎞
    x⋅⎝x  + x⋅(x + 2)⎠
    
    In [53]: expand_mul(poly, deep=False)
    Out[53]: 
     3    2        
    x  + x ⋅(x + 2)
    

    此示例也适用于 expand 但由于你对你想要的操作有选择性,我建议使用 expand_mul .