如何为数组中的每个元素添加序号?附图像形状检测场景需求
给数组中每个形状添加对应类型的序号
嘿,这个需求其实很好实现~核心就是按形状类型分别维护计数,遍历数组的时候动态更新每个形状的序号就行,不用把所有形状混在一起计数。我给你举个具体的例子:
假设你已经得到了这样的形状数组:
shapes = ['矩形', '圆形', '矩形', '矩形', '圆形']
实现思路
- 先创建一个计数器(字典/对象),用来跟踪每种形状已经出现的次数;
- 遍历原数组,对每个形状:
- 如果是第一次出现,就把它的计数设为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
相关产品推荐
相关产品推荐

