Python中如何基于重复固定值9对数组元素进行分组
按固定值分隔数组分组实现方案
待处理数据
目标数组如下,需要以值9作为分隔标识拆分分组:
size=[9, 41, 1368, 887, 307, 9, 114, 81, 9, 34, 12, 13, 12, 4, 548, 3, 77]
分组规则:
- 每两个相邻的
9之间的元素为一组 - 每组第一个元素赋值给
b - 每组剩余元素拼接为逗号分隔的字符串赋值给
c
期望输出共3组:
分组1 b=41 c=1368,887,307 分组2 b=114 c=81 分组3 b=34 c=12,13,12,4,548,3,77
之前编写的遍历代码没有正确标记分隔位置、也没有对分段元素做暂存处理,因此无法得到正确结果。
实现逻辑
- 初始化临时列表存储当前正在收集的分组元素,初始化总分组列表存储所有拆分后的分组
- 遍历原数组:
- 遇到值为
9的元素时,如果当前临时列表不为空,说明已经收集完一组元素,将临时列表存入总分组列表,清空临时列表准备收集下一组 - 遇到非
9的元素时,直接加入当前临时列表
- 遇到值为
- 遍历完成后,将最后一段没有被存入总列表的元素追加进去(数组末尾没有
9作为结束标记,需要单独处理) - 遍历总分组列表,按格式输出每组的
b和c值
完整代码
size = [9, 41, 1368, 887, 307, 9, 114, 81, 9, 34, 12, 13, 12, 4, 548, 3, 77] groups = [] current = [] for num in size: if num == 9: if current: groups.append(current) current = [] else: current.append(num) if current: groups.append(current) for i, group in enumerate(groups, 1): print(f"分组{i}") print(f"b={group[0]}") print(f"c={','.join(map(str, group[1:]))}\n")
运行上述代码即可得到完全符合预期的输出结果。
内容的提问来源于stack exchange,提问作者Saurabh Bulandani
相关产品推荐
相关产品推荐

