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

如何为列表中重复元素按出现顺序添加递增序号标记

列表元素按顺序编号标记的实现方案

核心思路

用字典动态记录每个元素的出现次数,遍历原列表时,每遇到一个元素就更新对应计数,再拼接成「元素+计数」的字符串存入结果列表。不需要提前获取唯一元素(如果已经获取也可以用它初始化字典)。

方法一:无需依赖numpy的简洁实现

foo = ['A', 'A', 'B', 'A', 'B', 'C', 'C', 'A', 'B', 'C', 'A']
count_tracker = {}
output = []

for item in foo:
    # 首次遇到元素时初始化计数为0
    if item not in count_tracker:
        count_tracker[item] = 0
    count_tracker[item] += 1
    output.append(f"{item}{count_tracker[item]}")

print(output)
# 输出:['A1', 'A2', 'B1', 'A3', 'B2', 'C1', 'C2', 'A4', 'B3', 'C3', 'A5']
# 注:你给出的output中第9个元素是B2,这里实际应为B3,属于笔误

方法二:基于np.unique初始化字典的实现

如果你坚持要用已获取的唯一元素来初始化计数字典,可以这么写:

import numpy as np

foo = ['A', 'A', 'B', 'A', 'B', 'C', 'C', 'A', 'B', 'C', 'A']
unique_elements = np.unique(foo)
count_tracker = {elem: 0 for elem in unique_elements}
output = []

for item in foo:
    count_tracker[item] += 1
    output.append(f"{item}{count_tracker[item]}")

print(output)
# 输出同上

说明

两种方法都是一次遍历完成,时间复杂度为O(n),效率很高。第一种方法更灵活,不需要引入numpy依赖;第二种则贴合你已经获取唯一元素的操作场景。

内容的提问来源于stack exchange,提问作者coffeedealer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:40:02