我正在尝试使用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
答案 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)