如何简便检测列表中的所有数组是否均为空?
检查二维列表中所有子列表是否均为空的简便方法
可以通过以下几种简洁的方式实现需求:
方法1:利用all()结合生成器表达式(推荐)
all()函数会在所有元素为True时返回True,空列表在布尔语境下等价于False,因此通过取反来判断每个子列表是否为空:
def all_empty(lst): return all(not sublist for sublist in lst) # 测试示例 a = [[], []] print(all_empty(a)) # 输出: True b = [["x"], ["y"], []] print(all_empty(b)) # 输出: False
这种方法的优势是短路求值——一旦遇到非空的子列表,会立即停止遍历并返回False,效率较高。
方法2:检查每个子列表的长度是否为0
直接判断每个子列表的长度是否等于0,逻辑更直观:
def all_empty(lst): return all(len(sublist) == 0 for sublist in lst) # 测试示例 a = [[], []] print(all_empty(a)) # 输出: True b = [["x"], ["y"], []] print(all_empty(b)) # 输出: False
方法3:统计所有子列表的总长度
如果所有子列表都为空,总长度必然为0,反之则大于0:
def all_empty(lst): return sum(len(sublist) for sublist in lst) == 0 # 测试示例 a = [[], []] print(all_empty(a)) # 输出: True b = [["x"], ["y"], []] print(all_empty(b)) # 输出: False
注意:这种方法需要遍历所有子列表计算长度,无法提前终止,在子列表数量较多时效率不如前两种。
内容的提问来源于stack exchange,提问作者kaan46
相关产品推荐
相关产品推荐

