如何检查二维python列表是否仅包含数字1

时间:2019-05-04 11:11:23

标签: python

假设我有一个二维列表,并且不使用numpy,在这种情况下不使用两个for循环。

a = [[0,0,0],[1,0,0]]
b = [[0,0,0],[0,0,0]]

是否具有确定列表仅包含1或0的功能。

我认为

any()和all()在2D列表上不起作用。

a = [[0,0,0][1,0,0]]
b = [[0,0,0][0,0,0]]

I want

if allListItemsAreZero(b):
    print(‘this works’)

3 个答案:

答案 0 :(得分:0)

您的问题有两件事。

  1. 您的列表必须更正

    a = [[0,0,0] [1,0,0]] ==> a = [[0,0,0],[1,0,0]]

然后下面的代码应该可以为您提供帮助。

a = [[0,0,0],[1,0,0]]
for x in a:
  print(x.count(1))

答案 1 :(得分:0)

如果允许您使用标准库中的itertools,这是一种方法:

from itertools import chain

def allListItemsAreZero(input_list):
    for n in chain.from_iterable(input_list):
        if n != 0:
            return False
    return True

答案 2 :(得分:0)

要检查所有0s,我们可以使用any检查子列表中是否遇到1(感谢@JonClements提出想法)

def check_all_zeros(a):
    return not any(c != 0 for r in a for c in r)

print(check_all_zeros([[0,0,0],[0,0,0]]))
print(check_all_zeros([[0,1,0],[0,0,0]]))

输出将为

True
False

检查所有1s的类似想法,我们检查子列表中是否遇到0

def check_all_ones(a):
    return not any(c != 1 for r in a for c in r)

print(check_all_ones([[1,1,1],[1,1,1]]))
print(check_all_ones([[0,1,0],[0,0,0]]))

输出将为

True
False