假设我有一个二维列表,并且不使用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’)
答案 0 :(得分:0)
您的问题有两件事。
您的列表必须更正
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