如何用Python实现列表当前元素与前一个元素逐项相加?
解决方法
你要的不是常规的累积求和,而是让每个元素(除第一个)和它前一个原始元素相加对吧?给你几种实用的Python实现方式:
方法一:原生循环(直观易懂)
这种写法逻辑最清晰,新手也能快速理解:
l = [4, 2, 1, 3] new_l = [l[0]] # 第一个元素直接保留原值 for i in range(1, len(l)): # 当前元素 + 前一个原始元素 new_l.append(l[i] + l[i-1]) print(new_l) # 输出: [4, 6, 3, 4]
方法二:列表推导式(简洁优雅)
用列表推导式结合zip函数,一行搞定核心逻辑:
l = [4, 2, 1, 3] # 先保留第一个元素,再对相邻元素配对相加 new_l = [l[0]] + [curr + prev for curr, prev in zip(l[1:], l[:-1])] print(new_l) # 输出: [4, 6, 3, 4]
这里zip(l[1:], l[:-1])会把[2,1,3]和[4,2,1]配对成(2,4)、(1,2)、(3,1),刚好对应每个当前元素和前一个元素的组合。
方法三:Numpy实现(适合数组场景)
如果你习惯用Numpy处理数据,可以用数组移位的方式实现:
import numpy as np l = [4, 2, 1, 3] arr = np.array(l) # 拼接第一个元素,再把移位后的数组相加 new_arr = np.concatenate([[arr[0]], arr[1:] + arr[:-1]]) new_l = new_arr.tolist() print(new_l) # 输出: [4, 6, 3, 4]
arr[1:]是从第二个元素开始的子数组,arr[:-1]是到倒数第二个元素的子数组,两者逐元素相加后,再和第一个元素拼接就得到结果。
内容的提问来源于stack exchange,提问作者user3762120
相关产品推荐
相关产品推荐

