如何移除二维列表中互为反转的重复子列表?
移除二维列表中互为反转的重复子列表
给定如下二维列表:
[[1, 6], [2, 5], [3, 7], [5, 2], [6, 1], [7, 3], [8, 9], [9, 8]]
需求是移除所有互为反转的重复子列表(例如[1, 6]与[6, 1]、[3, 7]与[7, 3]这类成对元素),最终期望得到的结果为:
[[1, 6], [2, 5], [3, 7], [8, 9]]
解决思路与代码
核心逻辑是给每一组互为反转的子列表设定唯一标识,用集合记录已处理过的标识,遍历原列表时只保留首次出现的子列表:
original_list = [[1, 6], [2, 5], [3, 7], [5, 2], [6, 1], [7, 3], [8, 9], [9, 8]] result = [] seen = set() for sublist in original_list: t = tuple(sublist) reversed_t = tuple(reversed(sublist)) # 取元组和其反转中较小的作为唯一标识,确保互为反转的子列表对应同一个标识 key = min(t, reversed_t) if key not in seen: seen.add(key) result.append(sublist) print(result)
运行这段代码即可得到符合要求的去重结果。
内容的提问来源于stack exchange,提问作者Beam291
相关产品推荐
相关产品推荐

