如何将嵌套列表中重复首元素替换为空字符串,仅保留首次出现的值?
实现代码
my_list = [ ['common1', '112', '4000'], ['common1', '11', '11'], ['common1', '33', '33'], ['common1', '33', '900'], ['common2', '31', '400'], ['common2', '2', '2666'] ] # 记录已出现过的首元素 seen = set() processed_list = [] for sub_list in my_list: first_val = sub_list[0] if first_val not in seen: # 首次出现直接保留,同时标记为已出现 processed_list.append(sub_list.copy()) seen.add(first_val) else: # 重复出现则将首元素替换为空 new_sub = sub_list.copy() new_sub[0] = '' processed_list.append(new_sub) # 验证输出 print(processed_list)
输出结果
运行上述代码后得到的processed_list和要求的格式完全一致:
[ ['common1', '112', '4000'], ['', '11', '11'], ['', '33', '33'], ['', '33', '900'], ['common2', '31', '400'], ['', '2', '2666'] ]
逻辑说明
- 用集合
seen存储已经出现过的首元素,判断是否重复的时间复杂度为O(1),整体遍历效率为O(n),n为嵌套列表的总长度 - 调用
copy()方法是为了避免修改原始嵌套列表,如果你不需要保留原列表,也可以直接修改原列表的首元素,省略拷贝步骤 - 如果你确定首元素只会按连续分组出现(即相同首元素不会穿插出现在不同位置),也可以简化逻辑,不需要集合,只需要记录上一个出现的首元素即可,占用内存更小。
内容的提问来源于stack exchange,提问作者D_P
相关产品推荐
相关产品推荐

