使用Python将2D列表打印为多项式

时间:2018-06-25 18:20:40

标签: python multidimensional-array

我正在尝试使用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()

但是,此程序只能在新行上显示列表中的每个数字。我需要能够在同一行上显示所有数字,以便可以包含变量和指数。

3 个答案:

答案 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])更改为

  1. print self.num_list[i][j],在python 2中
  2. print(self.num_list[i][j], end=" ")在python 3中

答案 2 :(得分:0)

在Python 3.x中,将end = " "添加到您的打印行中,这应该可以解决问题。

print(self.num_list[i][j], end=" ")

请参见here.,希望对您有所帮助!