You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写代码实现列表元素按规则累加至接近指定阈值的功能

列表元素阈值累加处理实现方案

核心逻辑

  • 维护临时累加变量存储当前小于等于阈值的元素的累计值
  • 遍历列表时按元素大小、累加后是否超限分别处理
  • 遍历结束后记得将剩余的临时累加值存入结果列表

完整可运行代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:36:08