Python实现列表按累加阈值分组,解决剩余元素遗漏及格式化输出问题
代码优化与输出实现方案
1 修复剩余元素丢失问题
原代码仅在累加和达到阈值时触发分组追加,遍历结束后未达阈值的剩余元素没有追加逻辑,因此会丢失。只需在循环结束后追加剩余元素即可,优化后完整代码如下:
limit = 10 count = 0 findex = 0 lindex = 0 newlist = [] mylist = [5,2,4,5,1,2,6,5] for i in mylist: if count < limit: count += i lindex += 1 if count >= limit: lindex -= 1 newlist.append(mylist[findex:lindex]) count = i findex = lindex lindex += 1 # 追加最后一组未达阈值的元素 if findex < len(mylist): newlist.append(mylist[findex:]) print(newlist)
运行后输出的分组结果为:[[5, 2], [4, 5], [1, 2, 6], [5]]
2 格式化输出分组结果
可以按分组序号、组内元素、组累加和的样式输出,实现代码如下:
print("分组结果明细:") print("-"*40) for idx, group in enumerate(newlist, 1): group_sum = sum(group) group_str = "、".join(map(str, group)) print(f"第 {idx} 组 | 元素:{group_str} | 累加和:{group_sum}") print("-"*40)
输出效果如下:
分组结果明细: ---------------------------------------- 第 1 组 | 元素:5、2 | 累加和:7 第 2 组 | 元素:4、5 | 累加和:9 第 3 组 | 元素:1、2、6 | 累加和:9 第 4 组 | 元素:5 | 累加和:5 ----------------------------------------
如果需要调整样式,修改打印语句的格式即可。
内容的提问来源于stack exchange,提问作者Pythorene
相关产品推荐
相关产品推荐

