如何在矩阵中记录索引计数?(蟒蛇)



我有一个多维数组,看起来像这样:

matrix = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]

如果我想在矩阵内的第一个位置找到值,我必须做这样的事情:

matrix[0][0]

有什么方法可以让我不必输入坐标来找到位置,我可以只要求特定位置?

所以说如果我想要第一个位置,我会输入

matrix[1]

而不是

matrix[0][0]

如果我想要第二个位置,我只需输入

matrix[2]

而不是

matrix[1][0]

等等。

感谢您的帮助。

最简单(也是最干净)的解决方案之一是将矩阵包装在类中,并为该类定义括号运算符。但是,请注意,通常,仓位从 0 到 n-1,而不是从 1 到 n。

该代码与python 2和python 3兼容

class Matrix:
    def __init__(self, matrix):
        self.matrix = matrix
        self.n = len(matrix)
    def __getitem__(self, index):
        index -= 1
        return self.matrix[int(index%self.n)][int(index/self.n)]
a = [[1,5,9,13],
     [2,6,10,14],
     [3,7,11,15],
     [4,8,12,16]]
mtx = Matrix(a)
print([ mtx[i] for i in range(1,17) ])
# [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

最新更新