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
相关产品推荐
相关产品推荐

