【发布时间】:2018-04-18 12:45:34
【问题描述】:
我正在用 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还是[0]? -
感谢您对格式的帮助。它返回一个空列表。 @Ev.Kounis
-
很难理解它的作用。你有样本输入和输出吗?
rref_matrix打印什么? -
rref_matrix没有理由成为全球性的。这可能是导致我们永远无法为您调试的许多问题的原因。 永远不要使用global是很好的建议;摆脱它,然后重试。
标签: python python-3.x list function math