考虑一些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