我需要找到如何检查作为列表的输入是否是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语句格式。
答案 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
如果这不是问题,那么有助于查看更多代码,并了解代码运行时会发生什么。