Python 类多项式的实例

Python 类多项式的实例,python,Python,如何从创建类多项式新实例的三种不同方法中获得要列出的系数 class Polynomial(object) def __init__(self,*args) self.coeffs=[] ... pol1 = Polynomial([1,-3,0,2]) pol2 = Polynomial(1,-3,0,2) pol3 = Polynomial(x0=1,x3=2­,x1=-3) 例如,我期望:pol2=多项式(1,-3,0,2),输出是2x^3-3

如何从创建类多项式新实例的三种不同方法中获得要列出的系数

class Polynomial(object)
    def __init__(self,*args)
        self.coeffs=[]
        ... 

pol1 = Polynomial([1,-3,0,2])
pol2 = Polynomial(1,-3,0,2)
pol3 = Polynomial(x0=1,x3=2­,x1=-3)

例如,我期望:
pol2=多项式(1,-3,0,2)
,输出是
2x^3-3x+1
。但是我需要列出系数来使用它们。

假设始终使用三种方法中的一种,您可以执行以下操作(无需任何验证):


除了Schwobasegll的回答之外,我还要加上这种检查:

if type(args[0]) == list:
    self.coeffs=args

# ...
else:
    self.coeffs=[kwargs.get(x, 0) for x in ['x'+i for i in range(len(kwargs))]]

thx很多,你认为有没有可能对系数的可变计数做到这一点呢?总是有:)但是对于同样接受kwargs的泛型
init
,很难得到完全任意阶的多项式。但这至少涵盖了较低的度数,例如,
x3=0
@george实际上,如果使用前两种初始化方法之一,这已经涵盖了任意数量的系数。嗯
args
始终是类型
tuple
。另一个检查可能会失败,因为在OP的示例中,
x2
被省略为0,因此中间可能缺少一些
xi
,因此KWARG的数量不一定是最高的
xi
if type(args[0]) == list:
    self.coeffs=args

# ...
else:
    self.coeffs=[kwargs.get(x, 0) for x in ['x'+i for i in range(len(kwargs))]]