如果python中的二维数组至少有一个True,如何返回True

如果python中的二维数组至少有一个True,如何返回True,python,python-3.x,multidimensional-array,boolean,Python,Python 3.x,Multidimensional Array,Boolean,我试图编写一段代码,检查2D数组(仅由布尔值组成)是否至少有一个True,如果至少有一个True,则返回True 我尝试使用all()函数,但没有找到解决方案。我假设我需要的与all()函数所做的相反 数组1=[[True,False],[False,False]] >>>全部([阵列1中的行的全部(行)) 错#这应该是真的 >>>数组2=[[False,False],[False,False]] >>>全部([all(行)用于阵列2中的行) False#这是正确的,但是这个和数组都为True是

我试图编写一段代码,检查2D数组(仅由布尔值组成)是否至少有一个True,如果至少有一个True,则返回True

我尝试使用
all()
函数,但没有找到解决方案。我假设我需要的与
all()
函数所做的相反

数组1=[[True,False],[False,False]] >>>全部([阵列1中的行的全部(行)) 错#这应该是真的 >>>数组2=[[False,False],[False,False]] >>>全部([all(行)用于阵列2中的行) False#这是正确的,但是这个和数组都为True是唯一的工作情况。 对于
array1=[[True,False],[False,False]]
,我希望输出是
True
,因为
array1[0][0]
有一个
True

def has_true(arr):
    return any(any(row) for row in arr)

In [7]: array1 = [[True, False], [False, False]]

In [8]: array2 = [[False, False], [False, False]]

In [9]: has_true(array1)
Out[9]: True

In [10]: has_true(array2)
Out[10]: False
这个答案使用生成器,因此它在找到第一个真值时返回,而不遍历整个矩阵。此外,它将使用O(1)空间

编辑:删除不必要的代码

这个答案使用生成器,因此它在找到第一个真值时返回,而不遍历整个矩阵。此外,它将使用O(1)空间

编辑:删除不必要的代码

使用any()而不是all()。如果iterable对象中的所有项都为true,则all()返回true。 如果iterable对象中的任何项为True,则any()返回True。

使用any()而不是all()。如果iterable对象中的所有项为True,则all()返回True。
如果iterable对象中的任何项为True,any()将返回True。

一种短得多的方法是使用
any
将列表链接在一起,并对其应用
any

from itertools import chain

def has_true(arr):
    return any(chain(*arr))

print(has_true([[True, False], [False, False]]))
print(has_true([[False, False], [False, False]]))
输出将是

True
False

一种更短的方法是使用
any
将列表链接在一起,并对其应用

from itertools import chain

def has_true(arr):
    return any(chain(*arr))

print(has_true([[True, False], [False, False]]))
print(has_true([[False, False], [False, False]]))
输出将是

True
False

谢谢!这是我在看到你的代码后想到的;
any([any(row)表示数组中的row])
。如果你能告诉我这是另一种方法,那就太好了。我会编辑我的帖子,你的方法是正确的,但应该使用生成器谢谢!这是我在看到你的代码后想到的;
any([any(row)表示数组中的row]))
。如果您能告诉我这是另一种方法,那就太好了。我会编辑我的帖子,您的方法是正确的,但应该使用生成器