如何用Python列表推导式展平含多列表与单个元素的列表?
处理混合嵌套/非嵌套元素的列表展平问题
你遇到的问题是列表中同时存在嵌套子列表和单个元素,普通列表推导式无法直接兼容两种元素类型。这里提供两种实用解决方法:
先明确你的列表结构:
l1 = [[1,2],[3,4],[6,7]] l2 = [[1,2],[3,4],[6,7],8]
方法一:改进版列表推导式
通过判断元素是否为列表,将单个元素临时包装成单元素列表,统一遍历逻辑:
flattened_l2 = [e for sub in l2 for e in (sub if isinstance(sub, list) else [sub])]
执行后得到结果:[1, 2, 3, 4, 6, 7, 8]
方法二:递归生成器(通用型)
如果需要处理更深层级的嵌套列表(比如[[1,[2,3]],4]),递归生成器的适配性更强:
def flatten(lst): for item in lst: if isinstance(item, list): yield from flatten(item) else: yield item flattened_l2 = list(flatten(l2))
该方法支持任意层级的嵌套结构,同样能输出正确的展平结果。
内容的提问来源于stack exchange,提问作者Vikas Garud
相关产品推荐
相关产品推荐

