Python列表连续相同元素求和代码结果不符问题排查
现有代码问题排查
- 核心逻辑判断错误:
if number == number+1:是恒不成立的表达式,任何数字加1后都不可能等于自身,因此循环每次都会进入else分支,每次累加后直接将结果存入新列表,最终输出的是原列表的前缀和数组,和需求完全不符。 - 缺少连续组判断逻辑:没有记录上一组的数值,无法识别当前数字是否和前序数字属于同一个连续相同组,无法控制累加和存入结果的时机。
- 命名不规范:使用Python内置类型名
list作为自定义变量名,会覆盖内置list的功能,可能引发后续未知错误。
正确实现代码
nums = [1,1,4,4,4,0,1] new_list = [] if not nums: print(new_list) exit() sum_ = nums[0] prev = nums[0] for number in nums[1:]: if number == prev: sum_ += number else: new_list.append(sum_) sum_ = number prev = number # 补充存入最后一组的和 new_list.append(sum_) print(new_list)
运行验证
上述代码运行输出结果为[2, 12, 0, 1],和预期结果完全一致。
内容的提问来源于stack exchange,提问作者Hamza Tanya
相关产品推荐
相关产品推荐

