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

Python如何实现嵌套列表各子列表独立去除重复元素

嵌套列表按子列表独立去重实现

问题场景

对包含嵌套子列表的列表执行去重操作时,现有脚本去重作用范围不符合预期,嵌套列表最终输出和目标结果存在偏差。

原测试代码

# initializing list 
result = []
hasil = []
sam_list = [[11, 17, 11, 13, 13, 15, 16, 11], [4, 7, 11, 34, 4, 7, 11, 6], [1, 6, 11, 13, 13, 4, 1, 6]]

for item in sam_list:
    print("START")
    for x in item:
        print(x, result)
        if x not in result:
            print("NOT IN")
            result.append(x)
    hasil.append(result)

实际运行输出

[[11, 17, 13, 15, 16, 4, 7, 34, 6, 1], [11, 17, 13, 15, 16, 4, 7, 34, 6, 1], [11, 17, 13, 15, 16, 4, 7, 34, 6, 1]]

期望输出

[[11, 17, 13, 15, 16], [4, 7, 11, 34, 6], [1, 6, 11, 13, 4]]

错误原因

原代码把去重缓存列表result定义在子列表循环的外层,处理所有子列表时共用同一个缓存空间,且每次追加到最终结果hasil的是result的引用而非独立副本,最终所有子列表项都指向同一个累计了全部元素的列表,无法实现子列表维度的独立去重。

修正方法

处理每个子列表前,单独初始化当前子列表专属的去重缓存,遍历完当前子列表的所有元素、完成单列表去重后,再将独立的去重结果追加到最终结果列表中,即可实现每个子列表独立去重、保留元素首次出现顺序的效果。

修正后代码

hasil = []
sam_list = [[11, 17, 11, 13, 13, 15, 16, 11], [4, 7, 11, 34, 4, 7, 11, 6], [1, 6, 11, 13, 13, 4, 1, 6]]

for item in sam_list:
    # 每个子列表单独初始化去重缓存
    current_result = []
    for x in item:
        if x not in current_result:
            current_result.append(x)
    hasil.append(current_result)

print(hasil)

运行上述代码即可得到符合预期的输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:25:04