Python函数全部表现不佳

时间:2019-03-02 18:35:25

标签: python matrix

我正在尝试使用python中的all函数来搜索矩阵,但是它的行为不符合预期。我假设对于matrix,它将输出True;对于matrix2,它将输出False。我在这里想念什么?

  matrix= [[1,1,1,1,1,1,1,1],
           [1,1,1,1,1,1,1,1],
           [1,1,1,1,1,1,1,1],
            [1,1,1,1,1,1,1,1],
            [1,1,1,1,1,1,1,1],
            [1,1,1,1,1,1,1,1],
                [1,1,1,1,1,1,1,1],
                [1,1,1,1,1,1,1,1]]

matrix2= [[0,0,0,0,0,0,0,0],
   [0,0,0,0,0,0,0,0],
   [0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0]]


def isComplete(m):
    return all(item != 0 for item in m)

print isComplete(matrix)
print isComplete(matrix2)

输出:

True
True

3 个答案:

答案 0 :(得分:1)

只需更改您的isComplete()

def isComplete(m):
    return all(j != 0 for item in m for j in item)

在代码仅检查list(non empty list)之前,这就是为什么它返回True的原因。

答案 1 :(得分:0)

您必须在此处使用嵌套循环,因为矩阵包含列表而不是实际数字

return all(item != 0 for line in m for item in line)

答案 2 :(得分:0)

您需要遍历嵌套列表,因此需要嵌套的理解。

return all(item != 0 for sublist in m for item in sublist)