【问题标题】:List returned from function is empty, Python3从函数返回的列表为空,Python3
【发布时间】: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


【解决方案1】:

您的打印语句存在缩进问题。它应该向左移动 1 个选项卡。 您发布的代码永远不会以这种方式运行。此外,您毫无理由地声明了一个全局变量,并且您的函数对于外部人员完全不可读。

您提到但您没有在此处发布的电话返回的 [0] 可能是您的

返回 0

第 19 行的声明。也许你的函数不应该进入那个 if 但不可能肯定地说,因为我不知道你在用你的代码做什么! 我希望我的提示对你有所帮助;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-20
    • 2021-03-07
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多