如何编写代码实现列表元素按规则累加至接近指定阈值的功能
列表元素阈值累加处理实现方案
核心逻辑
- 维护临时累加变量存储当前小于等于阈值的元素的累计值
- 遍历列表时按元素大小、累加后是否超限分别处理
- 遍历结束后记得将剩余的临时累加值存入结果列表
完整可运行代码
def process_list(input_list, threshold=80): result = [] current_sum = 0 for num in input_list: # 元素大于阈值,先存之前的累计值,再存当前元素 if num > threshold: if current_sum > 0: result.append(current_sum) current_sum = 0 result.append(num) else: # 累加后不超限就继续加 if current_sum + num <= threshold: current_sum += num # 累加超限就先存之前的累计值,当前值作为新累计的起始 else: result.append(current_sum) current_sum = num # 处理遍历结束后剩下的累计值 if current_sum > 0: result.append(current_sum) return result
如果要沿用你开头写的按索引遍历的写法,也可以使用以下版本:
def process_list(input_list, threshold=80): result = [] current_sum = 0 n = len(input_list) for i in range(n): num = input_list[i] if num > threshold: if current_sum > 0: result.append(current_sum) current_sum = 0 result.append(num) else: if current_sum + num <= threshold: current_sum += num else: result.append(current_sum) current_sum = num if current_sum > 0: result.append(current_sum) return result
测试示例验证
示例1测试
输入代码:print(process_list([12,40,30,53,82,31,100]))
输出结果:[52, 30, 53, 82, 31, 100],与示例要求一致。
示例2测试
输入代码:print(process_list([45,102,31,25,2,99]))
输出结果:[45, 102, 58, 99],与示例要求一致。
内容的提问来源于stack exchange,提问作者skyisthelimit
相关产品推荐
相关产品推荐

