Python检查2d列表中是否至少有一项为"无"



考虑一些2d列表:

a = [[1,2,3,4],
[5,6,7,None]]
b = [[1,2,3,4],
[5,6,7,8]]

如何检查2d列表中是否至少有一个None

输出:处理a应输出布尔值False,b应输出True

我不知道这个列表什么时候是2d列表。

您可以使用两个循环,一个在另一个内部。

def at_least_one_none(array):
for row in array:
for item in row:
if item == None:
return True
return False

这可以通过使用None in row而不是内部循环来简化。

def at_least_one_none(array):
for row in array:
if None in row:
return True
return False

任何一个都可以使用any()和生成器表达式编写

def at_least_one_none(array):
return any(None in row for row in array)

在这一点上,你几乎不需要函数。

如果第二个列表至少包含一个None,则此函数返回True,否则返回False

a = [[1,2,3,4],
[5,6,7,None]]
b = [[1,2,3,4],
[5,6,7,8]]


def fun(a_list):
for l in a_list:
if None in l:
return True
return False

print(fun(a))
print(fun(b))

输出:

True
False

这里,首先将所有列表合并为一个列表,然后检查值是否为None,并返回[True, True,..False]。最后检查里面是否有True。

代码:

True in [i==None for i in sum(<YourList>,[])] #returning True with None

或者从列表中筛选出None,然后检查它是否仍然是相同大小的

list(filter(None, sum(<Yourlist>,[])))!=len(<Yourlist>) #returning False with None

最新更新