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

如何遍历列表,合并连续同符号元素直至符号变化?

合并列表中连续同符号元素的求和方案

针对你需要合并列表中连续同符号元素并求和的需求,以下是能处理任意数量连续同符号元素的解决方案,替代你原来仅能两两处理的代码:

实现代码

arr = [1, 2, 1, -1, 2, -1, 2, -2, -2, 3, 1]
data = []

if not arr:
    print(data)
    exit()

# 初始化当前累加值与对应符号
current_sum = arr[0]
current_sign = 1 if arr[0] > 0 else -1

for num in arr[1:]:
    num_sign = 1 if num > 0 else -1
    if num_sign == current_sign:
        # 符号相同,继续累加
        current_sum += num
    else:
        # 符号不同,存入当前累加结果并重置状态
        data.append(current_sum)
        current_sum = num
        current_sign = num_sign

# 加入最后一组连续元素的求和结果
data.append(current_sum)

print(data)  # 输出: [4, -1, 2, -1, 2, -4, 4]

逻辑说明

  1. 初始化:从列表第一个元素开始,记录当前的累加值和对应的符号(正为1,负为-1)
  2. 遍历后续元素:
    • 若当前元素与累加组符号相同,直接累加到current_sum中
    • 若符号不同,先把之前的累加结果存入data,再将当前元素设为新的累加起点,更新符号
  3. 收尾处理:遍历结束后,把最后一组连续元素的求和结果加入data(因为最后一组没有后续元素触发存入操作)

对比原代码的优势

原代码通过步长为2的循环两两处理元素,仅能合并最多两个连续同符号的元素,无法处理三个及以上的连续情况(比如示例中前3个正数)。而上述方案可以处理任意数量的连续同符号元素,同时严格保持原列表的元素顺序。

内容的提问来源于stack exchange,提问作者Swordfish II

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:36:00