如何使用python创建此矩阵?
我已经创建了S,T,X,W,Y和Z以及L的第一行和最后一行。
答案 0 :(得分:0)
这样的东西(这是草稿!)。创建一个存储3个列表(对角线,上对角线和下对角线)的类,并公开一种编辑这些值的方法。
class TBMatrix:
def __init__(self,size):
self._size = size #Has to be square I guess?
self._diagonal = [None for i in range(0,size)]
self._upper_diagonal = [None for i in range(0,size - 2)]
self._lower_diagonal = [None for i in range(0,size - 2)]
def get(self,row,col):
if row == col:
return self._diagonal[row]
if row == col - 1:
return self._lower_diagonal[col]
if row == col + 1:
return self._upper_diagonal[row]
return 0 #or None, if you want a matrix that contains objects
def set(self,row,col,value):
if row == col:
self._diagonal[row] = value
elif row == col - 1:
self._lower_diagonal[col] = value
elif row == col + 1:
self._upper_diagonal[row] = value
else:
#No effect, maybe you want to throw an exception?
pass
这是一个快速草案,你需要做一堆检查,以确保没有尝试在列表大小之外分配索引。但这应该让你开始。
另一种方法是覆盖__getitem__
和__setitem__
以返回一个满0或None
的行,除非它需要为self._diagonal
保留一个点,{{ 1}}和self._upper_diagonal
。但它似乎更复杂。