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

如何为数组中的每个元素添加序号?附图像形状检测场景需求

给数组中每个形状添加对应类型的序号

嘿,这个需求其实很好实现~核心就是按形状类型分别维护计数,遍历数组的时候动态更新每个形状的序号就行,不用把所有形状混在一起计数。我给你举个具体的例子:

假设你已经得到了这样的形状数组:

shapes = ['矩形', '圆形', '矩形', '矩形', '圆形']

实现思路

  1. 先创建一个计数器(字典/对象),用来跟踪每种形状已经出现的次数;
  2. 遍历原数组,对每个形状:
    • 如果是第一次出现,就把它的计数设为1;
    • 如果已经出现过,就把计数加1;
    • 最后把形状名称和当前计数拼接成形状+序号的格式,存入结果数组。

Python 代码示例

# 初始化计数器字典
shape_counter = {}
labeled_shapes = []

# 遍历所有检测到的形状
for shape in shapes:
    # 更新当前形状的计数
    if shape not in shape_counter:
        shape_counter[shape] = 1
    else:
        shape_counter[shape] += 1
    # 拼接带序号的标签并加入结果
    labeled_shapes.append(f"{shape}{shape_counter[shape]}")

# 输出结果:['矩形1', '圆形1', '矩形2', '矩形3', '圆形2']
print(labeled_shapes)

JavaScript 代码示例(如果用JS环境)

const shapes = ['矩形', '圆形', '矩形', '矩形', '圆形'];
const shapeCounter = {};
const labeledShapes = [];

shapes.forEach(shape => {
    // 更新计数(简化写法:如果不存在就取0再加1)
    shapeCounter[shape] = (shapeCounter[shape] || 0) + 1;
    // 拼接标签
    labeledShapes.push(`${shape}${shapeCounter[shape]}`);
});

// 输出结果:["矩形1", "圆形1", "矩形2", "矩形3", "圆形2"]
console.log(labeledShapes);

另外,如果你的形状检测是实时的(比如每检测到一个形状就处理一次),也可以直接在获取到形状的那一刻更新计数器,不用等所有形状都存入数组后再批量处理,逻辑是完全一样的~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:48:01