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

Python如何对混合正负数列表的连续负数求和替换原片段

可行实现方案

思路非常简单:从头到尾遍历一次列表,碰到正数就直接按原顺序放到结果里;碰到负数就先暂存,把后续连续出现的所有负数累加求和,等碰到下一个正数或者遍历到列表末尾时,把这个累加得到的和一次性放入结果,替换掉原来整段连续负数即可。

完整可运行代码:

# 原始列表定义
a = [-10, 1, 5, 8, -5, -7, -2, 3, 4, 9, -1, -2]
result = []
current_neg_sum = 0  # 用来暂存连续负数段的累加值

for num in a:
    if num >= 0:
        # 遇到正数,先把之前没存的连续负数和存入结果,重置暂存值
        if current_neg_sum != 0:
            result.append(current_neg_sum)
            current_neg_sum = 0
        # 正数直接存入,位置和取值都不变
        result.append(num)
    else:
        # 属于当前连续负数段,累加值
        current_neg_sum += num

# 处理列表末尾是连续负数的边界情况
if current_neg_sum != 0:
    result.append(current_neg_sum)

a = result
print(a)

运行代码后输出为[-10, 1, 5, 8, -14, 3, 4, 9, -3],和预期结果完全一致。

逻辑说明

  • 该实现仅做一次列表遍历,时间复杂度为O(n),运行效率高
  • 自动覆盖两类边界场景:列表开头是连续负数、列表末尾是连续负数,不需要额外写特殊分支处理
  • 所有正数的取值、相对位置完全不会改动,仅对连续的负数片段做求和替换

内容的提问来源于stack exchange,提问作者Duke Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:03:24