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

如何对元素为列表的CB列表去重?np.unique和list(set())无效

解决列表中子列表去重的问题

问题分析

你遇到的问题是:二维列表里的子列表无法直接用set去重(因为列表是不可哈希类型),而np.unique会扁平化数组,返回单个元素的去重结果,不符合需求。

最简单的解决方案

1. 不保留原顺序的单行代码

利用tuple可哈希的特性,先把每个子列表转成元组去重,再转回列表:

CB = [[0, 0], [0, 1], [0, 2], [0, 1], [1, 1], [1, 2], [0, 2], [1, 2], [2, 2]]
CB1 = [list(t) for t in set(tuple(item) for item in CB)]

2. 保留原顺序的单行代码(Python 3.7+)

利用Python 3.7及以上版本中字典的有序性,用dict.fromkeys实现去重同时保留子元素首次出现的顺序:

CB1 = [list(x) for x in dict.fromkeys(map(tuple, CB))]

结果验证

两种方法最终都会得到你需要的结果:[[0,0], [0,1], [0,2], [1,1], [1,2], [2,2]](第一种方法顺序可能随机,第二种和原列表中子元素首次出现的顺序一致)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:15:38