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