如何将包含子列表与字符串的嵌套列表扁平化为一维列表
嵌套列表扁平化方案
针对「同时包含子列表和非列表元素、需要展开为一维列表」的需求,分两种常用场景提供实现方案:
1. 仅两层嵌套(匹配你给出的示例场景)
如果你的输入列表最多只有一层子嵌套,没有更深的嵌套结构,直接用遍历判断即可,性能最优:
Input_List = [['a', 'b'],'c','d',['e', 'f']] Final_List = [] for elem in Input_List: # 判断当前元素是否为列表,是就展开追加,否则直接追加 if isinstance(elem, list): Final_List.extend(elem) else: Final_List.append(elem)
执行后得到的Final_List就是你需要的['a','b','c','d','e','f']。
也可以用更简洁的列表推导式写法:
Final_List = [sub_elem for elem in Input_List for sub_elem in (elem if isinstance(elem, list) else [elem])]
2. 任意深度嵌套(通用场景)
如果你的输入可能存在多层嵌套(例如[[['a'], 'b'], 'c', ['d', ['e']]]),可以用递归生成器实现通用的扁平化逻辑:
def flatten_list(nested): for item in nested: if isinstance(item, list): # 递归展开子列表 yield from flatten_list(item) else: yield item Input_List = [['a', 'b'],'c','d',['e', 'f']] Final_List = list(flatten_list(Input_List))
该方案可以兼容任意层级的嵌套结构,自动展开所有底层非列表元素。
内容的提问来源于stack exchange,提问作者CodeMaster
相关产品推荐
相关产品推荐

