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

Python如何展平任意嵌套列表并提取唯一元素?

解决任意深度嵌套列表的唯一元素提取问题

刚好碰到过类似的需求——从多层嵌套的列表里把所有非列表元素捞出来,还要去重。之前找的方案大多只支持二维列表,根本处理不了这种套娃式的嵌套,用递归就完美解决了,给你看完整的实现:

def extract_unique_elements(lst):
    unique = []
    def recursion_occurs_here(element):
        for item in element:
            if isinstance(item, list):
                recursion_occurs_here(item)
            else:
                unique.append(item)
    recursion_occurs_here(lst)
    return set(unique)

简单说下思路:

  • 内部的recursion_occurs_here函数负责递归遍历:碰到列表就继续往里钻,碰到非列表元素就塞进收集列表里
  • 最后把收集到的所有元素转成集合,自动帮我们完成去重,刚好就是你要的结果

测试一下你给的例子:

print(extract_unique_elements([2,[[2,4,5],"c",[[["c","d"]]]]]))
# 输出: {2, 4, 5, 'c', 'd'}

如果想优化下效率,也可以直接用集合来收集元素,省去最后转集合的步骤:

def extract_unique_elements(lst):
    unique = set()
    def recursion_occurs_here(element):
        for item in element:
            if isinstance(item, list):
                recursion_occurs_here(item)
            else:
                unique.add(item)
    recursion_occurs_here(lst)
    return unique

这样每找到一个元素直接加入集合,不用先存列表再转换,性能会好一点点~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:49:38