0

我需要找到如何检查作为列表的输入是否是 2D 的,其列数与行数相同,并且其中的部分数相同。示例:[[4,5],[4,5,6]] and [[2,3],[6,1],[2,9]]会生成错误消息。但[[3,4,5],[4,6,8],[5,8,-1]] and [[4,5],[4,1]]会是正确的。我努力了:

    for row in square:
        if len(row) != len(square):
            return False

但这并不完全正确。

编辑:此外,此检查位于检查列表的开头,因此它需要采用 if 语句格式。

4

2 回答 2

1

如果测试没有失败,是否有返回值?把你的代码放在一个函数中,假设没有更多的测试:

def matrix_test(square):
    for row in square:
        if len(row) != len(square):
             return False

...返回 False 或不返回值返回 None。所以如果你通过调用这个函数来测试一个矩阵,你永远不会得到通过测试的矩阵的 True 结果。因此,如果它不存在,请添加最后一行:

    return True

然后,您可以检查一个特定的矩阵

if matrix_test(matrix001):
    #run the next test

如果这不是问题,那将有助于查看更多代码,并了解它运行时会发生什么。

于 2013-10-16T01:06:12.363 回答
1

假设您的矩阵是一个包含其他序列的序列(例如您在问题中的列表列表),您可以简单地执行以下操作:

def is_square(matrix):
    return all(len(row) == len(matrix) for row in matrix)
于 2013-10-16T00:41:03.170 回答