You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sympy中如何对args列表排序及筛选最低指数项?

Sympy相关问题解答

1. 如何对Sympy中的args列表进行排序?

Sympy表达式的args属性返回未排序的子项列表,可通过以下方式排序:

  • 使用sympy.utilities.iterables.sort_args函数,按Sympy默认规则排序:
    from sympy import symbols
    from sympy.utilities.iterables import sort_args
    
    x = symbols('x')
    expr = 6*x**3 + 2*x**(1/2)
    sorted_args = sort_args(expr.args)
    
  • 用Python内置sorted()函数结合自定义规则,比如按变量幂次排序:
    sorted_args = sorted(expr.args, key=lambda term: term.as_poly(x).degree() if term.as_poly(x) else 0)
    

2. 从表达式中选出指数最低的项

对于6*x**3 + 2*x**(1/2)这类含非整数幂次的表达式,Poly不适用,可通过以下简便方法解决:

  • 使用as_ordered_terms()方法,默认按变量升幂排序,取第一个即为指数最低的项:
    from sympy import symbols
    
    x = symbols('x')
    expr = 6*x**3 + 2*x**(1/2)
    ordered_terms = expr.as_ordered_terms()  # 结果为[2*x**0.5, 6*x**3]
    lowest_term = ordered_terms[0]
    
  • 若需自定义排序逻辑,可通过sorted()函数提取项的指数进行排序:
    def get_exponent(term, var):
        if term.is_Mul:
            for factor in term.args:
                if factor.is_Pow and factor.base == var:
                    return factor.exp
            return 0
        elif term.is_Pow and term.base == var:
            return term.exp
        elif term == var:
            return 1
        else:
            return 0
    
    lowest_term = sorted(expr.args, key=lambda t: get_exponent(t, x))[0]
    

内容的提问来源于stack exchange,提问作者Ragon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:27:35