我正在尝试使用2D列表作为存储多项式的方法。我已经能够创建一个存储2D列表的对象,以表示多项式。但是,当我尝试获取2D列表并将其以正确的数学符号显示时,我遇到了困难。这意味着诸如:[[1,8],[-5,7],[-1,1],[-1,0]]
之类的列表应具有:x^8 - 5x^7 - x - 1
的输出。到目前为止,这是我的程序:
global poly
poly = []
class Polynomial():
def __init__(self,num_list = []):
sorted_list = list(sorted(num_list,key=(lambda d:d[1]),reverse=True))
for i in sorted_list:
poly.append(i)
self.num_list = poly
def display(self):
for i in range(len(self.num_list)):
for j in range(len(self.num_list[i])):
print(self.num_list[i][j])
a = Polynomial([[1,8],[-5,7],[-1,1],[-1,0]])
a.display()
但是,此程序只能在新行上显示列表中的每个数字。我需要能够在同一行上显示所有数字,以便可以包含变量和指数。
答案 0 :(得分:1)
这应该对您有用:
class Polynomial():
def __init__(self,num_list = []):
sorted_list = list(sorted(num_list,key=(lambda d:d[1]),reverse=True))
self.num_list = [i for i in sorted_list]
def display(self):
storage = []
for i in range(len(self.num_list)):
storage.append(str(self.num_list[i][0]) + 'x^' + str(self.num_list[i][1]))
print(''.join(storage))
a = Polynomial([[1,8],[-5,7],[-1,1],[-1,0]])
a.display()
输出:
1x^8-5x^7-1x^1-1x^0
很显然,您可以使用一些更高级的显示逻辑,但是我将由您自己决定。希望有帮助!
或者如果您想将display
功能投入一线(从@bobrobbob的评论更新):
class Polynomial():
def __init__(self,num_list = []):
sorted_list = list(sorted(num_list,key=(lambda d:d[1]),reverse=True))
self.num_list = [i for i in sorted_list]
def display(self):
print(''.join('%+dx^%d' % (a, b) if b!=0 else '%+d' % (a) for a, b in self.num_list))
a = Polynomial([[1,8],[-5,7],[-1,1],[-1,0]])
a.display()
输出:
+1x^8-5x^7-1x^1-1
答案 1 :(得分:0)
我想您在水平打印对象时遇到问题。如果是
将print(self.num_list[i][j])
更改为
print self.num_list[i][j],
在python 2中print(self.num_list[i][j], end=" ")
在python 3中答案 2 :(得分:0)