您可以通过强制将因式分解的结果像产品一样对待(无论是否),将产品分解为一系列因素;这会给你一个因素元组。如果需要,您可以使用 list 将其更改为列表:
>>> from sympy import Mul
>>> list(Mul.make_args(factor(x**6-1)))
[x + 1, x - 1, x**2 + x + 1, x**2 - x + 1]
您说“我希望每个因式多项式都单独放在一个列表中,如果可能的话我该怎么做”;你是这个意思吗:
>>> [[i] for i in Mul.make_args(factor(x**6-1))]
[[x + 1], [x - 1], [x**2 + x + 1], [x**2 - x + 1]]
您想对重复的参数做什么?
>>> [b for b,e in factor_list((x+1)*(x**6-1))[1] for i in range(e)]
[x - 1, x + 1, x + 1, x**2 - x + 1, x**2 + x + 1]
>>> [b for b,e in factor_list((x+1)*(x**6-1))[1]]
[x - 1, x + 1, x + 1, x**2 - x + 1, x**2 + x + 1]
>>> from collections import Counter
>>> [b**(e*c) for (b,e),c in Counter(factor_list((x+1)*(x**6-1))[1]).items()]
[x - 1, (x + 1)**2, x**2 - x + 1, x**2 + x + 1]
我不认为最后一步对于合并类似因素是必要的。我会将其报告为错误,因为文档字符串显示了另一个示例,其中重数为 2 的因子在元组中出现一次。