Python列表编码练习:嵌套函数中如何三次重复执行相同操作
Python列表三次追加求和问题修复
需求说明
编写Python函数实现以下逻辑:
- 接收一个列表作为输入
- 计算列表最后两个元素的和,将结果追加到列表末尾
- 基于追加后的新列表,重复上述求和追加操作,总共完成3次追加
- 返回最终处理完成的列表
现存问题
当前编写的代码运行后仅完成1次追加,调用print(append_sum([1, 1, 2]))仅得到输出[1, 1, 2, 3],无法完成三次追加的预期需求。
当前错误代码如下:
#This section adds the last two numbers together and appends to lst lst.append(lst[-1] + lst[-2]) return lst #I tried doing this but it produced the exact same result lst.append(lst[-1] + lst[-2]) return lst lst.append(lst[-1] + lst[-2]) return lst #Uncomment the line below when your function is done print(append_sum([1, 1, 2])) #After I run the code I get [1, 1, 2, 3]
错误原因
Python函数执行到return语句时会立刻终止运行,将结果返回给调用方,return语句之后的所有代码都不会被执行。上述代码在第一次append操作后就写了return,后面两次追加的逻辑完全没有执行机会,因此只会追加1个元素。
正确实现
写法1:顺序执行三次追加(逻辑直观)
把所有append操作放在return之前,所有追加操作完成后再统一返回结果:
def append_sum(lst): # 第一次追加 lst.append(lst[-1] + lst[-2]) # 第二次追加,基于第一次追加后的新列表计算 lst.append(lst[-1] + lst[-2]) # 第三次追加,基于第二次追加后的新列表计算 lst.append(lst[-1] + lst[-2]) return lst print(append_sum([1, 1, 2])) # 运行输出:[1, 1, 2, 3, 5, 8]
写法2:循环实现(更易维护)
如果后续需要调整追加次数,直接修改循环范围即可,不用重复写相同代码:
def append_sum(lst): # 重复执行3次追加操作 for _ in range(3): lst.append(lst[-1] + lst[-2]) return lst print(append_sum([1, 1, 2])) # 运行输出:[1, 1, 2, 3, 5, 8]
内容的提问来源于stack exchange,提问作者Chantel Segreti
相关产品推荐
相关产品推荐

