为何两个Python实现的append_sum函数返回结果不一致
两个append_sum函数结果差异原因解析
两个函数最终结果不同的核心原因是二者选取参与求和的元素的索引逻辑完全不同,具体差异如下:
- 方案1使用固定正索引取值,不符合需求逻辑
方案1三次求和都固定取lst[1]和lst[2]的值,Python列表的正索引是从左往右从0开始计数的固定位置,只要列表前3位元素没有被修改或删除,不管尾部追加多少新元素,lst[1]永远是初始的第二个元素1,lst[2]永远是初始的第三个元素2,二者相加的结果永远是3,所以三次追加的都是3,最终得到结果[1, 1, 2, 3, 3, 3]。 - 方案2使用动态负索引取值,符合需求逻辑
方案2三次求和都取lst[-1]和lst[-2]的值,负索引是从右往左计数,lst[-1]永远指向当前列表的最后一位元素,lst[-2]永远指向当前列表的倒数第二位元素,会随着列表长度更新自动指向最新的末尾元素:
- 第一次计算:初始列表最后两位是2和1,相加得3,追加后列表变为
[1, 1, 2, 3] - 第二次计算:当前列表最后两位是3和2,相加得5,追加后列表变为
[1, 1, 2, 3, 5] - 第三次计算:当前列表最后两位是5和3,相加得8,追加后得到预期结果
[1, 1, 2, 3, 5, 8]
内容的提问来源于stack exchange,提问作者Fahad
相关产品推荐
相关产品推荐

