You need to enable JavaScript to run this app. 如何使用两层列表推导式展平包含嵌套结构的字符串列表
优惠活动
大模型
产品
解决方案
定价
更多

如何使用两层列表推导式展平包含嵌套结构的字符串列表

Python嵌套列表展平问题修复

问题原因

  • list.append()方法的返回值为None,你原代码的列表推导式实际在收集所有append操作的返回值,因此得到全是None的嵌套列表
  • 列表推导式的设计目的是生成新列表,不适合用来执行修改外部变量这类带副作用的操作,不符合Python语法设计的最佳实践

修复方案

两层列表推导式实现(符合需求的最优写法)

这种写法无需额外定义外部临时列表,直接生成展平后的结果:

tweet_list=['!iniciamos', 'la', ['mi', 'banco', 'banco', 'señal'], 'con', 'nuestro', 'invitado', 'especial']
flated_list = [
    sub_elem
    for elem in tweet_list
    for sub_elem in (elem if isinstance(elem, list) else [elem])
]

执行后flated_list的结果为:
['!iniciamos', 'la', 'mi', 'banco', 'banco', 'señal', 'con', 'nuestro', 'invitado', 'especial']

也可以写成单行形式:

flated_list = [sub_elem for elem in tweet_list for sub_elem in (elem if isinstance(elem, list) else [elem])]

普通循环实现(可读性更高,适合复杂嵌套场景扩展)

如果后续可能遇到更深层的嵌套,用普通循环的写法更容易修改扩展:

tweet_list=['!iniciamos', 'la', ['mi', 'banco', 'banco', 'señal'], 'con', 'nuestro', 'invitado', 'especial']
flat = []
for elem in tweet_list:
    if isinstance(elem, list):
        flat.extend(elem)
    else:
        flat.append(elem)

内容的提问来源于stack exchange,提问作者GonzaloMoreno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 12:06:03