Python不使用第三方包实现嵌套列表的子列表去重
嵌套列表子列表去重实现(Python原生无第三方依赖)
核心思路
Python中列表属于不可哈希类型,无法直接放入set完成去重,我们可以先将每个子列表转为可哈希的元组,去重完成后再转回列表结构即可。
方法1:基础去重(不保留原始顺序)
A = [[-1, 0, 1], [-1, -1, 2], [-1, 0, 1]] unique_A = [list(item) for item in set(tuple(sublist) for sublist in A)] print(unique_A)
输出结果:[[-1, 0, 1], [-1, -1, 2]](子列表顺序可能随Python版本发生变化)
方法2:保留原始出现顺序的去重
如果需要严格保持子列表在原始列表中首次出现的顺序,可使用遍历加标记的方式实现:
A = [[-1, 0, 1], [-1, -1, 2], [-1, 0, 1]] seen = set() unique_A = [] for sublist in A: t = tuple(sublist) if t not in seen: seen.add(t) unique_A.append(sublist) print(unique_A)
输出结果固定为:[[-1, 0, 1], [-1, -1, 2]]
注意事项
- 上述方法仅适用于子列表的所有元素都是可哈希类型(数字、字符串、元组等)的场景,如果子列表内还有更深层的嵌套列表,需要先递归将深层结构转换为可哈希类型后再执行去重逻辑。
内容的提问来源于stack exchange,提问作者user16073138
相关产品推荐
相关产品推荐

