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

Python如何实现列表连续相同元素求和?现有代码缺最后结果如何修复

现有代码问题及调整方案

你的代码逻辑里,仅在遍历到与前一位不同的元素时,才会把上一组的累计和存入结果列表。当整个列表遍历完成后,最后一组的累计和还没有被追加到output中,所以会缺少最后一项。
只需在循环结束后补充一次追加操作即可,调整后代码如下:

lst=['+1', '-1', '-1', '-1', '+1', '-1', '+1', '+1']
output=[]
s=int(lst[0])
for i in range(1,len(lst)):
    if lst[i]==lst[i-1]:
        s+=int(lst[i])
    else:
        output.append("{0:+}".format(s))
        s=int(lst[i])
# 追加最后一组的累计结果
output.append("{0:+}".format(s))

print(output)

运行后即可得到预期输出['+1', '-3', '+1', '-1', '+2']。

更优实现方案

可以直接使用Python标准库itertools中的groupby工具完成连续相同元素分组,不需要手动维护累计变量和边界判断,逻辑更简洁不易出错:

from itertools import groupby

lst=['+1', '-1', '-1', '-1', '+1', '-1', '+1', '+1']
output = []
for _, group in groupby(lst):
    group_sum = sum(int(item) for item in group)
    output.append(f"{group_sum:+}")

print(output)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:07