如何筛选元组列表中左侧元素唯一的元组?
按元组左侧元素去重(保留首次出现项)
实现思路
用集合记录已处理过的左侧整数,遍历原列表时,仅将左侧整数未在集合中出现过的元组加入结果列表,同时把该整数存入集合,确保每个左侧整数只保留第一次出现的元组。
代码实现
original_list = [(1, 60), (1, 93), (1, 104), (1, 145), (1, 159), (4, 20), (4, 30), (4, 103), (8, 8), (9, 35), (9, 172), (9, 191), (10, 33), (10, 164), (10, 185)] seen = set() result = [] for item in original_list: left_num = item[0] if left_num not in seen: seen.add(left_num) result.append(item) print(result)
运行结果
[(1, 60), (4, 20), (8, 8), (9, 35), (10, 33)]
补充说明
count函数不适用的原因:它只能统计整个元素在列表中的出现次数,无法针对元组的左侧元素做去重判断,且反复调用会让时间复杂度升至O(n²),用集合跟踪的方式更高效直接。
内容的提问来源于stack exchange,提问作者larzz_010
相关产品推荐
相关产品推荐

