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

Python展平列表额外维度至一维及嵌套列表去方括号问题咨询

Python嵌套列表展平为一维的方法

问题解答

问题1:移除列表的方括号是否必须先将列表转换为字符串?

不需要。把列表转成字符串再处理是舍近求远的做法,不仅效率低,还容易出问题——比如如果列表元素本身包含方括号字符,会被误处理。直接对列表进行操作才是最可靠的方式。

主问题:移除嵌套列表中的额外方括号(嵌套列表的索引会随内容变化)

示例(已翻译为中文):Words = ['红衬衫', ['小黄人', '敢死队', '炮灰']]

下面提供几种通用方法,不管嵌套列表在哪个位置都能处理:

  • 方法一:手动遍历判断(适合单层嵌套)
    直接遍历列表元素,遇到子列表就把它的元素合并到结果里,否则直接添加元素:
def flatten_list(lst):
    result = []
    for item in lst:
        if isinstance(item, list):
            result.extend(item)
        else:
            result.append(item)
    return result

Words = ['红衬衫', ['小黄人', '敢死队', '炮灰']]
print(flatten_list(Words))  # 输出: ['红衬衫', '小黄人', '敢死队', '炮灰']
  • 方法二:用itertools.chain简化写法
    借助标准库的itertools.chain可以更简洁地实现,先把非列表元素包装成单元素列表,再链式合并:
from itertools import chain

Words = ['红衬衫', ['小黄人', '敢死队', '炮灰']]
flattened = list(chain.from_iterable(
    item if isinstance(item, list) else [item] for item in Words
))
print(flattened)  # 输出: ['红衬衫', '小黄人', '敢死队', '炮灰']
  • 方法三:递归处理多层嵌套
    如果你的列表存在多层嵌套(比如['红衬衫', ['小黄人', ['敢死队', '炮灰']]]),可以用递归深度遍历:
def flatten_deep(lst):
    result = []
    for item in lst:
        if isinstance(item, list):
            result.extend(flatten_deep(item))
        else:
            result.append(item)
    return result

# 测试多层嵌套场景
test_list = ['红衬衫', ['小黄人', ['敢死队', '炮灰']]]
print(flatten_deep(test_list))  # 输出: ['红衬衫', '小黄人', '敢死队', '炮灰']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:19:52