如何快速移除嵌套列表中的空子列表?(Python列表推导式实现)
移除嵌套列表中的空列表元素
现有嵌套列表:
a = [[[1, 1], [], [2,2]], [[2,2], [], [1, 1]]]
需要转换为:
a = [[[1,1], [2,2]], [[2,2], [1,1]]]
直接用嵌套列表推导式就能实现,核心逻辑是过滤掉每一层子列表中的空列表元素:
a = [[[1, 1], [], [2,2]], [[2,2], [], [1, 1]]] # 嵌套推导式:外层遍历顶级子列表,内层过滤空列表 a = [[sub for sub in lst if sub] for lst in a] print(a) # 输出:[[[1, 1], [2, 2]], [[2, 2], [1, 1]]]
这里if sub等价于if sub != [],因为空列表在布尔判断中会被视为False,非空列表为True,写法更简洁。
如果嵌套层级更深,还可以用递归函数处理任意深度的空列表:
def remove_empty_lists(lst): return [remove_empty_lists(item) if isinstance(item, list) else item for item in lst if item != []] a = [[[1, 1], [], [2,2]], [[2,2], [], [1, 1]]] a = remove_empty_lists(a) print(a) # 输出同样符合需求
内容的提问来源于stack exchange,提问作者Jailbone
相关产品推荐
相关产品推荐

