从函数返回的列表是空的,Python3

时间:2018-04-18 12:45:34

标签: python python-3.x list function math

我正在用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) 

打印[]

我没看到什么?
提前谢谢!

1 个答案:

答案 0 :(得分:1)

您的print语句存在缩进问题。它应该向左移动1个标签。 您发布的代码永远不会以这种方式运行。此外,您完全没有任何理由地声明了一个全局变量,并且您的功能对于外部人来说完全不可读。

你提到的电话所返回的[0]但你没有在这里发帖可能是你的

  

返回0

第19行的陈述。也许你的功能不应该进入那个但是不可能这样说是肯定的,因为我不知道你在用你的代码做什么! 我希望我的提示可以帮到你;)

相关问题