【发布时间】:2016-08-02 07:14:36
【问题描述】:
我正在尝试使用表示二维矩阵的嵌套列表来查找行列式。但它无限调用 getMinor() 函数并不断从同一个列表中删除,这不应该发生,因为我每次都在创建新列表。下面是代码。此外,所有函数都定义在一个名为 'Matrix()' 的类中。
def __init__(self):
self.matrix_list = []
self.no_of_row = 0
self.no_of_col = 0
def getMinor(self, matrix, j):
del matrix[0]
for i in range(len(matrix)):
del matrix[i][j]
m = Matrix()
m.matrix_list = matrix[:]
m.no_of_row = len(m.matrix_list)
#print(m.no_of_row)
print(m.matrix_list)
m.no_of_col = len(m.matrix_list[0])
return m.detMatrix()
def detMatrix(self):
if self.no_of_row == 2 and self.no_of_col == 2:
return self.matrix_list[0][0] * self.matrix_list[1][1] - self.matrix_list[0][1] * self.matrix_list[1][0]
else:
matrix = self.matrix_list[:]
det = 0
for i in range(self.no_of_col):
det += ((-1)**i) * self.matrix_list[0][i] * self.getMinor(matrix, i)
return det
【问题讨论】:
-
切片只做浅拷贝。你需要更深层次的东西。
-
我正在考虑 - 类 Matrix 有两种方法 - getMinor 和 detMatix。那么你在它的方法中制作这个类的对象吗?示例:getMinor() 中的“m=Matrix()”。只是这样还是识别问题?
-
@DineshPundkar 它不是识别问题,我正在 getMinor 中制作类的对象来调用 detMatrix
标签: python python-3.x math matrix