如果我有一个矩阵,它会打印所有零,所以:
m=[[0,0,0],[0,0,0],[0,0,0]]
我想检查一下是否填写了不同的数字后是否还有零。只需返回布尔值True
或False
。
m=[[1,1,1],[1,1,1],[1,1,1]]
>> True
m=[[1,1,1],[1,0,1],[1,1,1]]
>> False
答案 0 :(得分:3)
使用any
和not
>>> 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)
使用all
,generator expression和not 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