【问题标题】:Returning the number of columns/longest row in 2D array and deleting a row返回二维数组中的列数/最长行数并删除一行
【发布时间】:2018-05-11 08:25:14
【问题描述】:

我正在从事一项尝试在 Python 3 中设计两种抽象数据类型的作业。我的问题是关于子类“dnmMtx”我正在寻找有关返回列数以及此子类中最长行“大小”的指导" 函数,并且还试图弄清楚如何删除一行。起初我以为我可以弹出一行或使用 .delete 选项,但都没有成功。另外,目前我的 size 函数返回有多少行。非常感谢您的帮助!

class DnmArr:

    def __init__(self):

        #create empty list
        self.arr=[]

    def __del__(self):
        print('Deconstructed')

    #return length
    def length(self):
        return len(self.arr)

    #append
    def append(self, x):
        #add x to arr
        if type(x) == int:
            self.arr.append(x)
        else:
            print('Not an integer.')

    #delete
    def delete(self,x):
        index = x
        #if element is present in array
        if index <= len(self.arr):
            self.arr.pop(index)
        else:
            print('Element does not exist.')


    def value(self, x):        
        if x <= len(self.arr) and type(x) == int:
            print(self.arr[x-1])
        else:
            print('Does not exist or list indices is not an integer')




#initializing subclass using parent
class DnmMtx(DnmArr):

    def __init__(self):
        DnmArr.__init__(self)
        self.arr=[[],[]] #creating 2d array

    def __del__(self):
        print('Deconstructed')

    def addrow(self):
        row = []
        self.arr.append(row)

    def delrow(self, x):
        if type(x) == int:
            self.arr.delete(arr[x])
        else:
            print('row does not exist/invalid row')

    def size(self):
         return len(self.arr)

    def append(self, x, y):
        if type(x) and type(y) == int:
            self.arr[x].append(y)
        else:
            print('Not an integer.')

    def delete(self, x, y):
        #if element is present
        if y <= len(self.arr[x]) and x <= len(self.arr): #check 
            self.arr[x].pop(y)
        else:
            print('Element does not exist.')

    def value(self, x, y):
        if x and y <= len(self.arr) and type(x) and type(y) == int:
            print(self.arr[x-1][y-1])
        else:
            print('Does not exist or list indices is not an integer')



#create object of type Dynamic Array
a = DnmArr()

b = DnmMtx()

【问题讨论】:

  • 我刚刚意识到我的删除功能也有缺陷,在我现在不确定是什么导致错误之前它正在工作

标签: python python-3.x list class abstract-data-type


【解决方案1】:

您的self.arr.pop(index) 呼叫也应该适用于行。 list 不知道它的元素也是列表。

您也可以通过以下方式删除列表列表中的一行

del self.arr[row_index]

例如

arr = [[1,2,3], [4,5,6]]
del arr[0]
print(arr) # --> [[4, 5, 6]]

【讨论】:

  • 我什至不知道 python 有这样的 del 函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2015-04-20
  • 2010-12-20
  • 2012-06-26
相关资源
最近更新 更多