Python实现列表相邻元素累加返回新列表的精简写法咨询
精简实现相邻数值累加的方案
你当前手写的循环逻辑符合需求,但代码存在缩进错误(first_value 后续的代码块多缩进了一层,直接运行会报错)。如果要压缩代码量,可以借助Python内置的序列操作函数实现,不需要手动维护前序值变量、也不需要写索引判断分支。
方案1:无依赖列表推导实现(最推荐)
核心思路是构造一个首项为初始值0、后续项为原列表除最后一位外所有元素的错位序列,和原列表按位求和即可:
my_list = [1,2,3,5,6] result = [cur + pre for pre, cur in zip([0] + my_list[:-1], my_list)] print(result) # 输出 [1, 3, 5, 8, 11]
这个写法天然兼容空列表输入,不会抛出索引异常。
方案2:lambda + map 实现
如果要用到lambda表达式,可以配合内置的map函数完成对位求和,逻辑和上面完全一致:
my_list = [1,2,3,5,6] result = list(map(lambda pre, cur: pre + cur, [0] + my_list[:-1], my_list)) print(result)
补充说明
你需求里的计算逻辑不是常规的前缀累加(常规前缀累加输入[1,2,3,5,6]会输出[1,3,6,11,17]),不要直接调用itertools.accumulate的默认逻辑,否则结果不符合预期。
内容的提问来源于stack exchange,提问作者vaanumalar
相关产品推荐
相关产品推荐

