Python列表累积求和问题求助:代码输出不符预期,不使用accumulate()
问题分析与修正
代码错误点
- 切片范围不正确:你用
values[0:i]进行切片时,i在range(len(values))中取0、1、2,对应的切片分别是[]、[1]、[1,2],求和结果自然是0、1、3,和预期的累加序列不符。要包含到第i+1个元素,应该把切片改成values[0:i+1]。 - 未将结果收集为列表:原代码只是逐个打印累加值,没有把结果整合为你需要的列表形式。
修正方案1(修改切片并收集结果)
values = [1,2,3] result = [] for i in range(len(values)): current_sum = sum(values[0:i+1]) result.append(current_sum) print(result)
运行输出:[1, 3, 6]
修正方案2(用变量累加,更高效)
上面的方案每次调用sum()都会重新计算前面所有元素的和,对于大列表效率较低。可以用一个变量保存当前累加值:
values = [1,2,3] result = [] current_total = 0 for num in values: current_total += num result.append(current_total) print(result)
运行输出同样是[1, 3, 6]
内容的提问来源于stack exchange,提问作者suganya thangappan
相关产品推荐
相关产品推荐

