You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何展平包含子列表与单个元素的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:27:44