我有一个多维数组,看起来像这样:
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]