检查矩阵是否有值

时间:2015-12-09 04:24:54

标签: python list

如果我有一个矩阵,它会打印所有零,所以:

m=[[0,0,0],[0,0,0],[0,0,0]]

我想检查一下是否填写了不同的数字后是否还有零。只需返回布尔值TrueFalse

m=[[1,1,1],[1,1,1],[1,1,1]]
>> True
m=[[1,1,1],[1,0,1],[1,1,1]]
>> False

3 个答案:

答案 0 :(得分:3)

使用anynot

>>> m=[[1,1,1],[1,0,1],[1,1,1]]
>>> not any(j==0 for i in m for j in i)
False
>>> m=[[1,1,1],[1,1,1],[1,1,1]]
>>> not any(j==0 for i in m for j in i)
True
如果iterable的任何元素为true,则

any返回True。如果iterable为空,则返回False

答案 1 :(得分:2)

使用Numpy的count_nonzero代替列表推导

的替代解决方案
>>> import numpy as np
>>> m = [[1,1,1],[1,1,1],[1,1,1]]
>>> m = np.asarray(m)
>>> np.count_nonzero(m) != m.size
False

>>> m=[[1,1,1],[1,0,1],[1,1,1]]
>>> m = np.asarray(m)
>>> np.count_nonzero(m) != m.size
True

答案 2 :(得分:1)

使用allgenerator expressionnot in operator

>>> m = [[1,1,1], [1,1,1], [1,1,1]]
>>> all(0 not in x for x in m)
True

>>> m = [[1,1,1], [1,0,1], [1,1,1]]
>>> all(0 not in x for x in m)
False