列表数值拆分累加生成60-100区间近80值的新列表实现咨询
列表处理功能完整实现
你原来使用for i in range(len(List))的遍历方式不适配元素拆分后剩余值重复参与计算的场景,调整为用临时变量存储累计值、配合指针遍历原列表的方式实现,完整可运行代码如下:
def process_list(input_list): res = [] current_sum = 0 idx = 0 n = len(input_list) while idx < n or current_sum > 0: # 还有未处理元素时,优先尝试累加后续元素 if idx < n: num = input_list[idx] temp = current_sum + num if temp <= 100: # 累加后落在合法区间,直接合并为结果元素 if temp >= 60: res.append(temp) current_sum = 0 idx += 1 # 累加后不足60,继续累计 else: current_sum = temp idx += 1 # 累加后超过100,拆分当前元素凑最接近80的合法值 else: target = min(100, max(60, 80)) take = target - current_sum res.append(target) current_sum = num - take idx += 1 # 所有元素处理完成,剩余累计值直接追加到结果末尾 else: res.append(current_sum) current_sum = 0 return res
示例验证
- 测试示例1:输入
[12,40,30,53,82,31,100],输出[82, 80, 86, 100],与题目给出的预期结果完全一致 - 测试示例2:输入
[45,102,31,25,2,99],输出[80, 98, 80, 46],与题目给出的预期结果完全一致
逻辑说明
- 用
current_sum变量存储当前累计值,避免频繁修改原列表,提升运行效率 - 严格遵循优先级规则:优先累加后续元素,只有累加后超过100时才拆分当前元素
- 拆分元素时优先凑到最接近80的合法值(60~100区间内),拆分后的剩余值留作下一轮计算使用
内容的提问来源于stack exchange,提问作者skyisthelimit
相关产品推荐
相关产品推荐

