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

2024-10-01 15:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个二维列表,不使用numpy,在本例中不使用two 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’)

Tags: 函数numpy列表forifanyallthis
3条回答

要检查所有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

你的问题有两件事。你知道吗

  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))

如果允许您使用标准库中的itertools,则可以这样做:

from itertools import chain

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

相关问题 更多 >

    热门问题