如何展平包含子列表与单个元素的Python列表?
混合子列表与单个元素的列表展平方案
你遇到的问题根源是字符串本身属于可迭代对象,原列表推导式会把单个字符串元素拆成字符遍历。要实现只展平子列表、保留单个元素的需求,可以通过判断元素类型区分处理:
方案1:列表推导式(简洁版)
original_list = [['item1','item2'],['item3','item4','item5'],'item6'] flattened_list = [item for elem in original_list for item in (elem if isinstance(elem, list) else [elem])]
核心逻辑:遍历原列表的每个元素,若元素是列表则直接遍历其内部元素;若不是列表(比如字符串),就把它包装成单元素列表,确保遍历后直接添加完整元素而非拆分字符。
执行后得到结果:
['item1', 'item2', 'item3', 'item4', 'item5', 'item6']
方案2:普通循环(直观版)
如果觉得推导式不够直观,也可以用基础循环实现:
original_list = [['item1','item2'],['item3','item4','item5'],'item6'] flattened_list = [] for elem in original_list: if isinstance(elem, list): flattened_list.extend(elem) # 子列表元素批量加入 else: flattened_list.append(elem) # 单个元素直接加入
这个逻辑和推导式完全一致,只是用显式循环更易理解。
内容的提问来源于stack exchange,提问作者z star
相关产品推荐
相关产品推荐

