我正在使用一个多项式程序,它接受这样的项对,输入是(系数,指数)
P1=多项式((9,11),(6,14),(-12,3),(42,0))
这是我的构造器:
def __init__(self, *termpairs):
L = [x for x in termpairs]
L = sorted(L, key=lambda x: x[1], reverse=True)
self.coeffs = L
所以我的问题是如何在已经生成的对象中添加另一个术语?新的项是这样添加的P1.addterm(系数,指数)和这里是我到目前为止,它不工作:
def addterm(self, *newterm):
for i in range(len(self.coeffs)):
if self.coeffs[i][1] == newterm[1]:
#code for when exponent is already in polynomial
break
else:
self.coeffs = Polynomial(self.coeffs), newterm)
break
看起来所有的术语都只是列表中的元组元素
self.coeffs
。在这种情况下self.coeffs
是一个列表,所以只需附加到它的末尾并重新排序列表:请注意,如果确实要传入单个元组,则函数签名是错误的。移除
*
,它将按预期工作如果交换数据的顺序并存储
(exponent, coefficient)
而不是(coefficient, exponent)
,还可以使用bisect
模块来避免排序:相关问题 更多 >
编程相关推荐