为什么我的sum_consecutives函数没有遍历完整数组?
问题根因
你的代码循环遍历范围是range(0, len(s)-1),受range左闭右开的特性限制,实际只会遍历到数组下标为len(s)-2的位置,仅处理到倒数第二个元素和相邻元素的对比,最后一组连续元素的和始终没有被添加到结果列表中,所以会缺失最后一位的计算结果。
修复方案
最小改动版本
仅需在原有代码的return语句前,增加一行处理最后一组元素和的逻辑即可:
def sum_consecutives(s): sum = 0 X = [] for i in range(0,len(s)-1): if s[i] == s[i+1]: sum += s[i] else: X.append(sum+s[i]) sum = 0 # 新增行:处理最后一组连续元素的和 X.append(sum + s[-1]) return X
优化版本
增加空数组边界判断,逻辑更易读:
def sum_consecutives(s): # 处理空输入的边界情况 if not s: return [] current_sum = s[0] res = [] for i in range(1, len(s)): if s[i] == s[i-1]: current_sum += s[i] else: res.append(current_sum) current_sum = s[i] # 追加最后一组的和 res.append(current_sum) return res
验证结果
输入测试用例[1,1,7,7,3]调用函数,返回结果为[2, 14, 3],符合预期。
内容的提问来源于stack exchange,提问作者TigerTN
相关产品推荐
相关产品推荐

