Skip to main content
 首页 » 编程设计

python之python中如何定义动态二维数组

2025年05月04日14JeffreyZhao

我想在python中定义一个动态二维数组。

我不知道我的二维数组在我的程序开始时会有多少行。我想根据需要在此二维数组中定义新行。

就像这段代码:

array = [][100] 
array[0][]  = new array() 
array[0][2] = 'hello' 
 
array[1][] = new array() 
array[1][3]= 'hello' 

请您参考如下方法:

你的意思是像下面这样的吗?

class DynamicList(list): 
 
    def __getslice__(self, i, j): 
        return self.__getitem__(slice(i, j)) 
    def __setslice__(self, i, j, seq): 
        return self.__setitem__(slice(i, j), seq) 
    def __delslice__(self, i, j): 
        return self.__delitem__(slice(i, j)) 
 
    def _resize(self, index): 
        n = len(self) 
        if isinstance(index, slice): 
            m = max(abs(index.start), abs(index.stop)) 
        else: 
            m = index + 1 
        if m > n: 
            self.extend([self.__class__() for i in range(m - n)]) 
 
    def __getitem__(self, index): 
        self._resize(index) 
        return list.__getitem__(self, index) 
 
    def __setitem__(self, index, item): 
        self._resize(index) 
        if isinstance(item, list): 
            item = self.__class__(item) 
        list.__setitem__(self, index, item) 
 
>>> mat = DynamicList() 
>>> mat[0] = ['row1','row1','row1'] 
>>> mat[1] = ['row2','row2'] 
>>> mat[2]= ['row3'] 
>>> mat 
[['row1', 'row1', 'row1'], ['row2', 'row2'], ['row3']] 
>>> print mat[1][1] 
row2 
>>> mat[5][5] = 'row5' 
>>> mat 
[['row1', 'row1', 'row1'], ['row2', 'row2'], ['row3'], [], [], [[], [], [], [],  
[], 'row5']] 
>>> print mat[5] 
[[], [], [], [], [], 'row5'] 
>>> print mat[5][5] 
row5