需要帮助检查使用python的2D矩阵输入

时间:2013-10-16 00:40:05

标签: python list 2d

我需要找到如何检查作为列表的输入是否是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语句格式。

2 个答案:

答案 0 :(得分:1)

假设你的矩阵是一个包含其他序列的序列(就像你在问题中列出的列表一样),你可以简单地做一些事情:

def is_square(matrix):
    return all(len(row) == len(matrix) for row in matrix)

答案 1 :(得分: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

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