如果python中的二维数组至少有一个True,如何返回True
我试图编写一段代码,检查2D数组(仅由布尔值组成)是否至少有一个True,如果至少有一个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是
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]))
。如果您能告诉我这是另一种方法,那就太好了。我会编辑我的帖子,您的方法是正确的,但应该使用生成器