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

如何移除二维列表中元素相同但顺序不同的重复子列表

移除嵌套列表中元素组成相同但顺序不同的重复子列表

给定嵌套列表:

nestedlist = [[1,2,3,4],[4,3,2,1],[1,5,8,7]]

需要编写函数处理后返回:

[[1,2,3,4],[1,5,8,7]]

方法一:集合+排序标记去重

核心思路是给每个子列表生成唯一标识:将子列表排序后转为元组(列表不可哈希,无法存入集合),用集合记录已经出现过的标识,遍历原列表时只保留首次出现的子列表。

def remove_duplicate_sublists(nested_list):
    seen = set()
    result = []
    for sublist in nested_list:
        key = tuple(sorted(sublist))
        if key not in seen:
            seen.add(key)
            result.append(sublist)
    return result

# 测试示例
nestedlist = [[1,2,3,4],[4,3,2,1],[1,5,8,7]]
print(remove_duplicate_sublists(nestedlist))

执行后输出:

[[1, 2, 3, 4], [1, 5, 8, 7]]

方法二:字典存储唯一子列表

和方法一逻辑一致,用字典的键存储排序后的元组,值保存原列表,最终提取字典的值即可得到去重后的结果。

def remove_duplicate_sublists(nested_list):
    unique_map = {}
    for sublist in nested_list:
        key = tuple(sorted(sublist))
        if key not in unique_map:
            unique_map[key] = sublist
    return list(unique_map.values())

# 测试示例
nestedlist = [[1,2,3,4],[4,3,2,1],[1,5,8,7]]
print(remove_duplicate_sublists(nestedlist))

注意事项

  • 上述方法仅适用于子列表元素为可哈希类型(如数字、字符串)的情况,如果子列表包含不可哈希元素(如嵌套列表),需要额外处理元素的唯一性判断。
  • 两种方法都会保留原列表中首次出现的目标子列表,符合示例需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:10:34