如何在Python中基于list1生成累加和列表list2?
用循环实现Python列表的前缀累加和
核心思路
要生成目标列表list2,我们需要维护一个累加器变量,遍历原列表时逐步累加元素,每一步的累加结果就是list2对应位置的元素。这种方法时间复杂度为O(n),效率很高。
实现代码(推荐高效版)
list1 = [1654, 2175, 2478, 2132, 2250, 2304, 2258, 2111, 1683, 2036, 2089, 1743, 1920, 1854, 2251, 1505, 1698, 1126, 1695, 1590] list2 = [] total = 0 # 初始化累加器 for num in list1: total += num # 将当前元素加入累加器 list2.append(total) # 把累加结果存入list2 # 验证结果(可选) print(list2)
代码解释
- 初始化
total为0,用来持续记录当前的累加总和 - 遍历
list1中的每个元素,每次将元素值加到total上,更新累加状态 - 把更新后的
total添加到list2的末尾,这样list2的第i个元素正好对应list1前i+1个元素的和
另一种基于索引的写法(仅作参考,效率较低)
如果你想通过索引遍历实现,也可以这样写,但数据量大时会比上面的方法慢很多:
list1 = [1654, 2175, 2478, 2132, 2250, 2304, 2258, 2111, 1683, 2036, 2089, 1743, 1920, 1854, 2251, 1505, 1698, 1126, 1695, 1590] list2 = [] for i in range(len(list1)): # 截取前i+1个元素并求和 current_sum = sum(list1[:i+1]) list2.append(current_sum) print(list2)
注:这种方法每次循环都要重新计算前i+1个元素的和,时间复杂度为O(n²),不建议用于大规模数据。
内容的提问来源于stack exchange,提问作者Jackfin321
相关产品推荐
相关产品推荐

