我正在用Python编写一个程序,以便更好地理解我的线性代数课程
我正在尝试使用函数来获取输入矩阵的RREF形式。该功能可以工作并打印出应有的功能。当我返回它打印的内容(下面的代码)并访问返回的值时,它不会提供列表。相反,它返回[]
如何以列表形式访问返回的值?
这是功能:
def rref(matrix_given):
global rref_matrix
rref_matrix = [[c for c in matrix_given[i]] for i in range(len(matrix_given))]
print(rref_matrix)
leading_one = 0
rowCount = len(rref_matrix)
columnCount = len(rref_matrix[0])
for row in range(rowCount):
if columnCount <= leading_one:
break
r = row
while rref_matrix[r][leading_one] == 0:
r += 1
if rowCount == r:
r = row
leading_one += 1
if columnCount == leading_one:
print(rref_matrix)
return 0
rref_matrix[r], rref_matrix[row] = rref_matrix[row], rref_matrix[r]
if rref_matrix[row][leading_one] != 0:
rref_matrix[row][:] = [x / rref_matrix[row][leading_one] for x in rref_matrix[row]]
for new_row in range(len(rref_matrix)):
if new_row != row:
rref_matrix[new_row][:] = [x - (rref_matrix[new_row][leading_one] * rref_matrix[row][rref_matrix[new_row].index(x)]) for x in rref_matrix[new_row]]
leading_one += 1
print(rref_matrix)
return rref_matrix
我按如下方式访问它:
rref_transposed = [row for row in rref(list(zip(*matrix)))]
print(rref_transposed)
打印[]
。
我没看到什么?
提前谢谢!
答案 0 :(得分:1)
您的print语句存在缩进问题。它应该向左移动1个标签。 您发布的代码永远不会以这种方式运行。此外,您完全没有任何理由地声明了一个全局变量,并且您的功能对于外部人来说完全不可读。
你提到的电话所返回的[0]但你没有在这里发帖可能是你的
返回0
第19行的陈述。也许你的功能不应该进入那个但是不可能这样说是肯定的,因为我不知道你在用你的代码做什么! 我希望我的提示可以帮到你;)