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

如何将嵌套列表中重复首元素替换为空字符串,仅保留首次出现的值?

实现代码
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:45:02