如何在矩阵中查找索引计数? (Python)的

时间:2016-05-25 01:00:13

标签: python multidimensional-array

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

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]

等等。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

最简单(也是最干净)的解决方案之一是将矩阵包装在类中,并为类定义括号运算符。但是,请注意,通常情况下,位置从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]